网站开发日志

2009年2月10日星期二

清除IE7的Cookie

我们公司的合作伙伴(affiliate)要求从通过他们的网站进入我们的网站后可以显示他们公司的图标。我们提供的解决方法是这样的:在链接进来的url后加入一个参数,通过这个参数来设置Session变量,然后通过判断Session的存在与否以及Session的值来决定是否显示图片以及显示哪个affiliate的图标。

Page.inc:

//1.先判断URL
$img = (isset($_GET['img'])) ? 
       trim(stripslashes(x_site_safe($_GET['img']))) : "";
//2. 如果URL上没有img参数,查看SESSION变量
if (!$img) $img = (isset($_SESSION['img']))? $_SESSION['img'] : "";
//3. 判断affiliate的图标是否存在
if (file_exists("/var/www/production/images/ns/img_upl/aff_logo_$img.gif"))
  $this->aff_img = $img;

Sessioin.inc

//1.判断url的img参数是否存在
$this->url['img'] = (isset($_GET['img'])) ? 
                     trim(stripslashes($_GET['img']))      : "";
//2.如果是新的访问并且URL含义合法的img参数,设置SESSION变量$_SESSION['img']
if ($this->do_tracking) { 
  if($this->url['img']) $_SESSION['img'] = $this->url['img'];
}

我这里用到if ($this->do_tracking) 目的是只对新访问进行设置SESSION变量。最后根据$this->aff_img存在与否来决定是否在HTML里显示图标。 注意:以上并非完整代码,只是用于示例用。

代码完成了,接下来是在浏览器里测试代码是否正确,首先必须先清浏览器的COOKIE。SESSION变量其实也是一种COOKIE,只是它不是存在客户端的电脑里,而是存放在服务器端。浏览器提供的清空COOKIE的功能同时也可以清除SESSION COOKIE。

在Firefox下,我们使用Web Developer扩展,通过它可以快捷地清除Domain Cookie,然后就可以测试了。测试结果一切正常:如果第一次进入网站并且在URL上加入参数 /?img=1,在整个session内,都可以看到affiliate1的图标。

当时在IE7下,我们碰到了问题。我们使用IE7工具栏里删除选项清空了COOKIE,同样在URL后加入img参数,在第一个页面我们看到了affiliate的图标,但是当点击网页的其他链接进入一个新的页面(URL不在带有img参数),图标就消失了。很明显SESSION变量没有设置正确,按照逻辑,清除COOKIE后,第一次进入网站,如果URL含有img参数,应该要设置SESSION变量的。为什么不行呢?最终的答案是在IE7下清空COOKIE,要重启浏览器才生效!

标签: ,

2009年1月10日星期六

Firefox 网页上显示光标

这几天我的Firefox出现怪现象:当用鼠标左键点击网页,它会在点击的位置显示光标,就好象在用Word处理文档一样。虽然这个功能很酷,但是在浏览网页的时候出现闪动的光标总是觉得很别扭。今天终于容忍不下了,上网Google了一下终于找到了原因。原来这是Firefox的 "特色功能":Caret Browsing,激活这个功能以后,我们可以使用键盘来选择页面内容(通常我们是用鼠标来选择的。除了鼠标坏了,不知道还有多少人在Windows操作系统里使用键盘来选择文本)。这个功能的开关是F7,打开Firefox,按一下F7,就会跳出一个对话框:

Pressing F7 turns Caret Browsing on or off. This feature places a moveable cursor in web pages, allowing you to select text with the keyboard. Do you want to turn Caret Browsing on?

选择"Yes"开;选择"No"关。

那么这个功能使怎么被打开的呢?我想一定是我的宝贝儿子干的。他是电脑高手?哈哈!他还不到一岁半呢,但他总喜欢在键盘上乱敲,所以很可能他敲了“F7+回车”,把这功能打开了。

标签:

2008年11月14日星期五

Mozilla希望Firefox的扩展插件开发者不要太懒

Firefox最大的优点可能就是它的扩展插件了。但是用过Firefox的朋友都知道,当Firefox一升级,就会有一些扩展插件不能用了。Mozilla已经开始开发工具来跟踪Firefox的扩展插件系统,这主要是为了让这些扩展插件可以更加快速地兼容将来的Firefox版本。

最新的Firefox版本3.1将快要发行了,但据Mozilla的博客帖子,许多扩展插件的开发者并没有为它做好准备。在最常用的Firefox插件中,只有20%为即将到来的版本做好更新工作。

Firefox3.1插件兼容性报告

在861个最常用的扩展插件里(注:这861个扩展插件占了95%的使用率)

  • 20%可以兼容Firefox3.1
  • 5%可以兼容Firefox3.1Beta
  • 15%可以兼容Firefox3.1Alpha
  • 60%完全不兼容Firefox3.1

标签:

2008年10月31日星期五

Google Chrome 的优秀资源

大约两个月前Google的Chrome浏览器beta版本初次登场,各大媒体都轰轰烈烈的报道这一重大新闻,毕竟是互联网老大的产品啊!虽然很多人都是尝鲜之后,又换回自己早已用惯的火狐或者IE浏览器,但是不论用户评价如何,Google还是继续完善自己的产品。10月30号 Google发行了Chrome的第三个beta版本,这次主要是在性能和安全上有所改善。如果你已经在使用Chrome,它会被自动升级(版本号:0.3.154.9)。而且Google已经确认很多像火狐浏览器那样的扩展(extensions)也将要接踵而来。如果你在使用Chrome,OSTATIC列出7个使用技巧和相关资源,你或许会用的上。

1.创建和保存个性化设置和数据(Profiles)

Google Chrome Backup,这款免费软件可以让你备份和恢复你创建的个性化设置和数据。 虽然是英文版的,但是傻瓜式的操作用起来应该不会有太大问题。

2. 高级用户技巧大全:

如果你是Chrome的爱好者,那么你一定要看看由Lifehacker带来的高级用户使用技巧

3. 在Mac OS X 和Linux上运行Chrome

由CodeWeavers开发的CrossOver Chromium,可以让你在Mac OS X and Linux上运行Chrome。虽然CodeWeavers公司表明该产品还处于幼儿期段,但是如果你是Mac用户或者Linux用户,而且又对Chrome狂热,那么这款软件很值得一试。

4. 匿名上网

如果你不想让自己的上网记录被别人知道(特别当你在公共场所使用无线网络上网的时候),你或许会对匿名上网感兴趣。Iron提供的这款浏览器是基于Chromium开发的,它的外观和工作方式和Chrome一模一样,不同的是它加入了多层个人隐私保护。此外你也可以试试Chrome隐私保护

5. 和火狐浏览器一样使用“about:”命令

和火狐浏览器一样,你可以在Chrome浏览器的地址栏输入‘about:’命令,来查看多种多样的信息。比如你输入"about:version"你就看到当前使用的Chrome浏览器的版本。Google OS blog 提供一系列很好的‘about’的命令。

6. USB版本

你可以通过这个链接:a lightweight tweak of Chrome,下载到基于Chrome开发的轻型浏览器,然后把存在U盘随身携带。

7.谷歌官方帮助视频

这是介绍谷歌Chrome最基本使用方法的视频:了解谷歌浏览器 »

标签:

2008年10月16日星期四

IE6下的CSS问题

浏览器的兼容性一直是网站设计里一个非常让人头痛问题。要想让你写出来的CSS/XHTML代码在各个浏览器都有一致的外观表现是非常难的。还好当前主流的浏览器的数目不是太多,一般情况下只要考虑Firefox,IE,Opera,Safari,而且在我看来最新版本的浏览器,像Firefox3,IE7, Oprea9,Safari3,不断的朝着统一的标准靠近。所以一般在Firefox下显示正常的CSS/XHTML代码在IE7, Oprea9,Safari3 下都不会有太大问题。可以在IE6下通常你会发现很多问题。我觉得主要原因是,IE6对'margin','padding', 'float'的解释和别的主流浏览器不同。特别是一些默认值,比如:

  1. 如果你没有给'h2'这个元素的'margin-bottom'定义,IE6会用一个比在其他主流浏览器下将近大一倍的距离。
  2. 如果你给一个'div'设置的高度小于'div'实际高度小,在Firefox/IE7下会用实际高度显示'div',但是IE6可能会给你一个过大的高度。

就像我的BLOG原先IE6下就存在这个问题,后来通过设置适当的div高度和h2的margin解决了IE6下的显示问题。

另外就是float在IE6下显示问题,比如:

  1. 在DIV里有三个纵向分区,它们的position是float:left。虽然你根据规则设置好各个分区的宽度,margin和padding,你会发现IE6并不按你的设置来显示,虽然第一,第二个分区是排在第一行了,但是第三个分区却跑到了第二行。

当然,IE6和Firefox的兼容性问题还有很多,上网Google一下,你还会发现很多。我的解决办法是分两步:

  1. 检查margin,padding的设置是否正确,特别是要避开我上面提到的默认值问题。
  2. 如果你确认CSS设置遵照了标准,但是在IE6下还是无法正常显示。那么你可以考虑给IE6写个特别CSS设置。例如:
    <!--[if lt IE 7]>
    
    <link rel="stylesheet" type="text/css" href="/css/=ie6.css?100608-1" />
    
    <![endif]-->

题外话:我不明白为什么国内还有那么多人用IE6,IE6连个多标签功能都没有,多点几个链接,就会出现一堆的窗口,不觉得麻烦吗?我强烈建议大家使用用IE7或者Firefox。

标签: ,

2008年10月6日星期一

IE打开网页出现空白

前一段时间,用Windows XP里的IE7打开我的主页www.61dh.com是发生了一件“怪事”:页面一片空白,连个错误信息也没有。右键点击,发现整个html代码数据已经下载下来了。折腾了几下,发现只要把"字符编码"手动改"utf-8"就可以显示了。到google搜索一下,找到解决方法了,为了方便自己也方便别人就把解决方法贴出来!

Google上搜索的解决方法 (注:我用Window Vista里IE7可以正常显示)


在windows操作系统上使用IE作为浏览器时。常常会发生这样的问题:在浏览使用UTF-8编码的网页时,浏览器无法自动侦测(即没有设定“自动选择”编码格式时)该页面所用的编码。即使网页已经声明过编码格式:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

,由此造成某些含有中文UTF-8编码的页面产生空白输出。

如果使用的是Mozilla、Mozilla Firefox、Sarafi的浏览器这不会造成这个问题。这是由于IE解析网页编码时以HTML内的标签优先,而后才是HTTP header内的讯息;而Mozilla系列的浏览器则刚刚相反。

由于UTF-8为3个字节表示一个汉字,而普通的GB2312或BIG5是两个。页面输出时,由于上述原因,使浏览器解析、输出<title></title>的内容时,如果在</title>前有奇数个全角字符时,IE把UTF-8当作两个字节解析时出现半个汉字的情况,这时该半个汉字会和</title>的<结合成一个乱码字,导致IE无法读完<title>部分,使整个页面为空百输出。而这个时候如果察看源文件的话,会发现实际上整个叶面全部已经输出了。

因此最简单的解决办法是再网页文件的<head></head>标签中一定要把字符定义<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 放在<title></title>之前。

标签: , ,

2008年9月3日星期三

Firefox 移除链接的外边框

你是否注意到,在Firefox浏览器里点击一个链接时,这个被点击的元素(<a> 或者<li>)会被加上一个虚线外边框。个人认为这个外边框很丑,y有点画蛇添足的味道。

  • 如果你想让你的网页上在Firefox里不显示这个外边框,你可以在CSS文件里加上一行:
    a:focus {outline: none;}
  • 如果你想去掉Firefox的这个功能,你可以通过修改配置文件。在地址栏输入:about:config, 然后用过滤器找到 browser.display.focus_ring_width, 把值设成'0'即可。

标签:

2008年9月2日星期二

Google 自己的浏览器 - Chrome

早有听说Google在开发自己的浏览器,以为只是谣传而已。今天终于看到这已经成为现实了。刚刚下载并安装了Google浏览器-Chrome(铬),还没有仔细的体验,但是总体的感觉是界面清爽,速度很快!此外:

  • 地址栏和搜索栏整合为一
  • 标签位于程序窗口外沿
  • 首页包含最常访问的9个页面截图以及最新搜索、书签

相信它将带来新一轮的浏览器之争!IE的市场份额会降到50%以下吗?

chrome

标签:

2008年8月29日星期五

How to open Search Result in a new Tab

By default, the search result in Firefox 3.0 search bar is open in current tab, which is bad when you are in an important web page, for example, filling the form, and then you want to do some search, damn! the page is gone replaced by the result page. Even you can go back to the page, you may not get what you need.

Here is a way to fix this without any thirty-party software.

  1. Type in 'about:config' in Address bar
  2. Enter a word 'search' in Filter bar
  3. You should see a Preference Named 'browser.search.openintab'; double click it to set its Value to 'true'
  4. If your search result is running at inactive tab, and you want to switch it right after you entering a search query, you can change the setting in Firefox, too. Go to 'Tools -> Options -> Tabs' and check the last option, 'When I open a link in a new tab, switch to it immediately

标签:

2008年8月28日星期四

Firefox -卸载重装

我发现Firefox无法设置主页了。比如我想把主页设置成www.61dh.com,重启Firefox后,主页又变回默认的Google火狐版。后来我发现一些插件的设置也不灵了。更烦人的事,一旦安装一个新的插件,每次重启火狐,那个插件的欢迎主页就伴随着默认主页启动。上网Google了,但是找不到答案。所以决定重装Firefox。 以下是我的插件:
  1. Alexa Sparky (统计排名)
  2. ColorZilla (颜色抓取)
  3. FoxMarks (书签工具)
  4. Google Toolbar IE View (有些时候还是要用到IE的:-))
  5. Web Developer (网站开发工具,特喜欢里面的尺子工具)

如何完全卸载火狐, (火狐的作风很好:要卸要装都由你,而且连怎么卸载都写得清清楚楚。)

http://kb.mozillazine.org/Uninstalling_Firefox

标签: