从浏览器兼容性说“Web 标准”

平日里项目紧张,不怎么写blog,也怎么读blog,周末当然是我blog的时间,我尝试着每个周末都写些东西。今天看到了 ceocio 关于 XHTML + CSS 的一个讨论:http://blog.joycode.com/ceocio/archive/2004/09/03/32312.aspx
我看到帖子中大多谈的是下载速度与开发习惯等问题,我想从另一个角度尝试写一些我对这个问题(特别是 CSS)的看法:

首先我给出一个截图(链接已失效),这是 ceocio 举出的一个 XHTML + CSS 制作的页面在 Mozilla 浏览器“眼”中的效果。是不是不够理想啊?(或许看到这里,下面的文章你已经知道我要写些什么了)

浏览器市场

作为 Web 站点来说,大多数时候面向 Internet 公开,你很少会要求访问者必须使用某种特定的浏览器来浏览你的站点(虽然你可以建议,但仍然无法强求),但你还希望能够最大限度的预料到访问者将要看到的页面效果,你还希望这个效果不要过于差劲

比如 tinydust.net 的访问统计(链接已失效),其实还是有不少用户使用非 IE 浏览器的,而国内很多 Web 作者,特别是 javascript 脚本作者,只会考虑 IE 的效果,丝毫不会顾虑非 IE 浏览器是否有脚本错误,甚至,我见过一个站点,干脆用脚本把非 IE 浏览器访客“拒之门外”!

然后就说 IE,从 4.0 加入 DHTML 功能开始,到 5.0 基本实现 CSS 1.0 和 W3C DOM Level 1,到 5.5 完善了一些 CSS 和 DOM 方面的功能。(而后从 5.5 到 6.0 在 CSS 和 DOM 方面变化不大)由于 Windows 2000 中初始安装的是 IE 5.0,Windows XP 开始初始安装 IE 6.0,而目前 Windows 2000 还有大量用户使用,也就造成了 IE 5.0 在访问者中的比例还是比较大的。目前,各浏览器所占比例大约为:IE 6.0: 三分之一强; IE 5.5 三分之一; IE 5.0 三分之一弱; 其他 10%。

因为 HTML 的标准化工作展开的比较早,各种浏览器在对 HTML 的实现上基本上都是按照 W3C HTML 3.2/4.0/ XHTML 等标准来进行的,可以说,同样的 HTML (无脚本及样式等)在不同浏览器下的效果差异是很小的,基于 HTML 的页面设计效果是可控的、可以预见的

回顾一下当年的 IE 和 Netscape 霸权之争:IE 4.x 和 Netscape 4.x 都在自己的浏览器中加入了动态 HTML 的功能:IE 的是 DHTML(包括:DOM, CSS, behavior等),Netscape 也有自己相似的一套(比如现在已经很少见的 layer 标签是 Netscape 4 的标志)。W3C 相关标准的制定进度,远远落在市场的后面,这也造就了后来的混乱。W3C DOM/CSS 等相关标准提出后(CSS 标准其实在 IE 4 之前已经有,但不完善),IE 5.0 起,除了向前兼容 IE 4.0 微软自己的一套 DHTML 外,也针对 W3C DOM/CSS 等标准作了一些调整。
(CSS 的调整幅度小,DOM 的调整幅度还是相当大的,比如 IE 4 中的 document.all 这样的集合并不非 W3C 标准规定中的,而 document.getElementById 方法确是 IE 4 没有、W3C 标准中的方法,IE 5 中添加的。)
当 IE 取得霸权之后,Netscape 没有继续推出 5.x 版本,终结在 4.7;另一方面,开源阵营的 Mozilla 以 W3C 标准为基础,追求对 W3C 标准的完全兼容;Netscape 决定放弃以前那个已经失败的版本,在 Mozilla 基础上增强自己的浏览器,Netscape 6 开始已经完全“脱胎换骨”的版本面世。其他的、市场份额很小的浏览器厂商或作者,在这样的市场条件中,要么臣服于 IE,走兼容 IE 的道路;要么遵守 W3C 的标准,努力追求完全实现 W3C 标准。

技术角度:两大阵营

至此,从技术角度,我们可以把浏览器分为两大阵营:一个是 IE 及其兼容;一个是以 Mozilla 为代表的 W3C 标准浏览器。(当然 IE 5 开始也可以归为后者,但为了兼容 IE 4.x,我们的脚本还是要以 4.x 为准的。)举个例子: document.all 的脚本在 IE/IE-compatible 运行良好,在 Mozilla/W3C-compatible 中运行就可能脚本错误;而 document.getElementById 的脚本在 IE 5+ / Mozilla / W3C-compatible 中运行良好,但对 IE 4.x 无效。

DOM/CSS 标准是好的,但各种浏览器对它们的实现却是复杂多样的,对于多数 Web 页面作者来说,过多的运用 DOM/CSS 将会增加这种复杂性,使得我们的目标——使页面效果可控、可预料——变得更加困难。

并不是绝对的

我写这些的目的是让大家了解浏览器市场的复杂,不要只盯着 IE 浏览器中效果,要让你的站点更友好,容得下更多的浏览器朋友。

网易新版社区 http://newclub.163.com(链接已失效) 当前的帖子内容页面,在 Mozilla “眼”中只有标题和结尾,帖子内容完全看不到,就是一个典型的反面教材。

[deleted](我对开头提出的问题的看法是:在浏览器市场份额没有大的变动前,应用 CSS 格式化时也要顾及一下浏览器的差异,在不太影响效果的前提下应用 CSS。)

睡了一觉又想了想,好像文章得到这样一个结论是奇怪的。其实结论应该是:

无论做 Web 开发使用哪种模式(无论是用 table 还是 CSS),都应该有所顾及其他浏览器中的效果。

ceocio 的那个有点问题的效果图,也说明了他做的时候没有考虑过其他浏览器中的效果。

附:下面是一个对比表格,显示了 IE 4/5/5.5 / Netscape 4/6 / Opera 4/5 在 CSS 1.0 实现方面的差异:
http://devedge.netscape.com/library/xref/2003/css-support/css1/mastergrid.html(链接已失效)

posted on 2004-09-04 20:35  破宝  阅读(270)  评论(0编辑  收藏  举报

导航