Tuesday, January 22, 2008

微软将强制将浏览器升级到 IE7

在 Solidot 上看到InfoWorld 的报道称,微软将在 2 月 12 日通 Windows Server Update Services 把所有 Windows 系统的浏览器强制升级到 IE7,不会像以前那样要经过用户的许可。微软给出的理由是“安全原因”。

Solidot 上还调侃说,对 WEB 开发者来说这是个好消息;对以前只支持 IE6 的网站来说,这是场灾难。

此话不假。以前做 WEB 界面,在所有为浏览器兼容性付出的工作中,50% 的时间花在让 IE 和 FireFox 兼容,另外 50% 的时间花在让 IE 的不同版本之间兼容。作为同一个公司推出的同一系列产品,对一种有标准的文档的理解会有如此大的差异,真的可以说是一件让人费解的事情。不过现在微软终于醒悟了,既然事实已经造成,那就让糟糕的过去都消失掉吧……

Labels: , , , , ,

(请点击这里阅读全文)

Thursday, October 26, 2006

Blogger 网页显示空白的问题

之前一直有朋友声称我的 Blog 访问不了,打开来是空白。这个问题我自己也经常遇到,原因是网页编码被误判成 GB2312,而不是正确的 UTF-8,于是 IE 无法识别,所以显示成空白。这个问题据说在 Firefox 上并不存在,但是为什么会被误判我也一直不清楚。

现在原因应该清楚了,因为在文件头中,声明网页内容编码的那一行标记
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

被放到了 <title> ... </title> 之后,而刚好 title 中有中文,所以 IE 在没有获得指定的编码类型时,用了默认的 GB2312。

解决这个问题还是比较容易:编辑 Blogger 的模版,把“<$BlogMetaData$>”放到“<title><$BlogPageTitle$></title>”的前面,然后重建一下,就不会出现这个问题了。

Labels: , , , ,

(请点击这里阅读全文)

Monday, October 10, 2005

IE, Opera 和 Mozilla Firefox

为了验证 tableless layout 版面的浏览器兼容性,特地找来了时下流行的 Opera 8.5 和 Mozilla Firefox 1.0.7 与 微软的 Internet Explorer 6.0 一起测试,结果是倍受打击……

原来以为基本上不用改就能兼容,因为完全没有用 table 排版,结果在这两个非 IE 的浏览器上,页面虽然没有面目全非,但是也不如在 IE 上显示的完整,而且有些地方莫名奇妙的怎么都设置不正确。花了 4 个小时,经过反复的和 stopdesign 网站样式表的比对,最后发现原因有两点:

  • 没有用标准的 XHTML 头来声明页面的 DocType,经过测试,发现用传统的 HTML 4.0 声明,和 XHTML 声明,三种浏览器渲染出来的结果都不同;
  • Mozilla Firefox 浏览器对样式表的要求非常严格,所有的数字属性,除了 0 以外,都必须带上单位,否则一律忽略不计!为了这个我纳闷了很久——前两个浏览器都能正确的显示各种样式的 border,而 Firefox 上所有的 border 全部都被忽略了,汗哪…… 给 border-width 参数加上单位 px 后,就正确了。paddingmargin 具有同样的问题。

以上提到的 XHTML 需要如下声明:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://gmpg.org/xfn/1">

对于线条的样式,dotted 和 dashed,在 IE 上 width 为 1 时,都显示为 dashed;但这两个样式在 Opera 和 Firefox 上能够明显的区分出来。另外,原来几乎所有的 JavaScript 在 Mozilla Firefox 上都不能运行,它对 JavaScript 的语法要求也非常严格,必须完全符合 W3C 标准:
  • document.all['id-name'] 不合法,用 document.getElementById('id-name') 替代;
  • object.all.tags("DIV") 不合法,用 object.getElementsByTagName("DIV") 替代;
  • collObjs(i) 不合法,用 collObjs[i] 替代。

做完以上工作后,终于页面能够在三种浏览器上得到几乎相同的结果了。突然觉得自己做了 5 年的 WEB,完全被微软毒害了,已经养成了太多不好的习惯;看来以后要严格执行 W3C 的 XHTML、CSS 和 JavaScript 标准才是。

Labels: , , , ,

(请点击这里阅读全文)