favicon.ico in IE

IE is a nightmare – 我对此体会越来越深刻。 想让自己的网站容易识别,就得从很多方面下功夫。个性化的,或与logo相配的favicon.ico就是要做的一件事情。如何让自己制作的favicon.ico在地址栏里显示出来,这点小事在Firefox下就是a piece of cake,在IE里我一直是忽视的,当我想起要重视的时候,为此整整折腾了一个晚上。所以我说IE is a nightmare。 首先,favicon.ico必须是标准的icon文件。之所以这么说,是因为有人说把favicon.bmp,或favicon.gif,或favicon.jpg格式保存的文件改名成favicon.ico就可以了,其实这样改名来的favicon.ico在Firefox下是能显示的,如果有人喜欢看重结果,不追求过程的话,Firefox下让favicon.ico出现的结果已经达到。但改名来的favicon.ico并不是真正的ico格式,IE是不认可的。对于这一点,错不在IE。我是追求完美的,要做就做一个正宗格式的favicon.ico,32 x 32 或 16 x 16都可以,我喜欢32 x 32,因为我没有ebay那么高水平,16 x 16还能尽显细节。 尽管有了标准格式的favicon.ico,能否在IE下显示还受很多因素制约。总的来说,我的感觉是,我按W3C标准出牌,但IE不按标准接牌,为兼顾到IE用户,我要付出成倍的时间。当然,我以外还有很多人,IE浪费了很多人宝贵的时间。好了,不发牢骚,让我总结一下IE下的制约因素。 虽说把favicon.ico放在网站的document root下就可以,但html里要有 <link rel=“shortcut icon” type=“image/x-icon” href=“/favicon.ico” /> 更保险。我发现google等几个站点都没有这一条语句,但它们的favicon.ico在IE里的显示成功率还是很高,对此我百思不得其解。 href绝对不能带域名,例如,不能写成 <link rel=“shortcut icon” type=“image/x-icon” href=“http://example.com/favicon.ico” /> 如果更新了favicon.ico,一定要清除cache才能看到更新,否则,无论怎么刷新都是不会更新的favicon.ico。 清除了cache,还得关闭IE,否则,你还是看不到更新。 IE在清空cache后第一次运行,访问任何网站,你都无法看到它们的favicon.ico。 清空cache后,让IE运行一次,随便访问一个网站,让cache里留下点东西,关闭IE,再打开IE,然后你才可以看到更新后的favicon.ico。 复杂吧,我搞得头都大了,才总结出这么点经验,不保证在你的机子上IE也是按这个“规律”运行的。因为,你知道的,IE是反常规出牌的。 以上说的还是较新版本IE7,至于IE6,我劝你还是断了让favicon.ico在IE6的地址栏出现的念头。因为,你不光要符合以上条件,你还得让你的用户把你的网站收藏为favorite,IE6在访问被收藏的网站时,才会显示favicon.ico (这大概是favicon的由来?)。我很少收藏别人的网站,所以我就没指望别人来收藏我的网站。