浏览器兼容性

网页的浏览器兼容性指网页在各种浏览器上的显示效果尽量保持一致的状态,90年代末的浏览器大战开始时被广泛使用。

浏览器兼容的重要性

  • 网站做好了浏览器兼容,能够让网站在不同的浏览器下都正常显示
  • 浏览器兼容能够抓住更多的网站访客
  • 浏览器兼容能够给客户更好的体验

浏览器大战

Internet ExplorerNetscape Navigator的争战中,两个浏览器各自推出非标准的HTML语句(如Navigator的BLINK标签——闪烁效果,Internet Explorer的MARQUEE标签——跑马灯效果),以专有的特色功能分割市场。微软以此产品差异化策略(Product Differentation)成功开发了一群忠实客户和数量上有一定影响的IE Only网站。

同时,网页浏览标准只规定了接口,并没有接口实现的详细规范,使得各浏览器对相同的功能使用了不同的实现方法,并导致了功能实现的差异。这些差异按程度由显示方面到核心概念的都存在。浏览器兼容性就是指标准功能在各浏览器的差异程度,差异的解决方法是为浏览器兼容

兼容趋势

  • 浏览器大战后期的Internet Explorer和Netscape Navigator两大浏览器都支持HTML 4.0和CSS 1,使得许多专用语法失去意义而被废止。
  • 客户端脚本方面,浏览器大战的产物DOM变成了浏览器间操控技术的共同界面;对专有方法已有涵盖。
  • 浏览器市场扩大,网站为了宣称自己的兼容能力,一般都能在Mozilla FirefoxOperaSafari和传统阵营的Internet Explorer、Netscape Navigator正常被浏览。
  • 浏览器的兼容能力日益受到需要;浏览器亦因应趋势,使自己的浏览器提供更多兼容功能。

指标

网页的浏览器兼容的总体目标是在各浏览器中显示正常,实现跨浏览器的,符合用户体验的高质量的网站。

一般从以下几个方面考虑网页的浏览器兼容性:

解决方法

  • Hack
    • css属性Hack
    • 选择器Hack
  • 条件注释

具浏览器兼容性的网页编码方式

下面是HTML和JavaScript的例子:

<div id="sample" style="position: absolute; top: 100px; left: 100px;">測試文字</div>

以上代码表示一个文字方块,距离页面左边界100px和页面上边界100px。 在Netscape Navigator 4系列中, 使用以下JavaScript移动上面的文字方块。

document.layers['sample'].left = 200;

但是,在Internet Explorer 4中,则要使用不同的代码。

document.all['sample'].style.left = 200;

为了移动文字方块的功能可以在两个浏览器中运行(即浏览器兼容性),须使用以下代码(在没有跨浏览器的标准操作方法时的做法)

if (document.all)
  document.all['sample'].style.left = 200;
else if (document.layers)
  document.layers['sample'].left = 200;

更标准的语句(推荐使用): 以下代码基于W3C标准DOM,能在Mozilla系列浏览器、Internet Explorer的新近版本和各种遵守标准标准的浏览器中。

document.getElementById('sample').style.left = '200px';

外部链接