如何兼容IE4:Web浏览器兼容性浅谈

一、前言

显然,如今诸多网站都希望自身兼容性尽量好,能够让用旧版浏览器的用户也能访问到完整的内容和功能。但是,显然,有时这是一个非常复杂的问题。

本文旨在结合一次插件开发过程中,所遇到和总结的所有问题与对应的方案,以供参考。本文 由 邹秉原 原创,转载请遵循协议。

二、基本问题

目前,浏览器兼容性问题主要有一下三个大方面:

  1. 各浏览器的私有属性如何在其它浏览器使用
  2. 标准规定的新属性如何在旧IE上使用
  3. 标准尚未明确的实验性属性如何在大多数浏览器上使用

很显然,希望总是找到一个完美的解决方案是不现实的。例如,IE初版甚至不支持脚本,也就更无兼容性一说。不过,依旧能够找到一些替代方案,尽量做到跨浏览器兼容,大部分情况下兼容到IE6就已经很不错了。

关于浏览器兼容性,可参照的最权威资料当然是W3CWHATWG。但是这些标准中的内容不是很方便查询,因此主要推荐MDN开发者文档,绝大多数标准方法和属性在该网站上都有说明。

三、兼容IE4的"DHTML"

DHTML是指动态超文本标记语言。实际上,如今绝大多数网页都不是完全静态的,就算没有服务端驱动,也会有很多客户端脚本需要对文档进行操作。因此,这仅仅是网络发展早期对这种网页的描述(初步认为基于HTML3.2),如今的HTML天生提供对该功能的支持。

该DHTML规范最初实现于 IE4 及 IE5 中,采用微软自主研发的 Jscript 作为脚本驱动(注意不是 JavaScript,但都继承于 ECMAScript 标准)。该规范与目前的标准有一定共通之处,但其中也有大多数 IE 的私有语法。

该规范的手册目前已经较难找到,但是一些网站通常有该手册的汉化版,如脚本之家。在发现几乎所需的所有标准方法 IE 都支持不佳时,不如到该手册中寻找 IE 私有的类似方法进行解决,向下兼容性就能得到显著提升。

比如 TextRange 接口,是 IE 旧版本中用于表示一段文本区间的方式。例如,用户按住鼠标在页面上选中一段文本时,被选中的文本就可以看成是一个 TextRange。而标准中也有与之类似的 Range 接口,该接口也是用于表示选择区域的,只不过基于节点而非文本。很显然,如果 Range 不被支持(IE9以下),那么就使用 TextRange,这样就能做到兼容了。

详细内容可以看我的JS自动复制函数,此函数就是同时通过两种方式实现选区操作。

四、跨浏览器兼容

首先,考虑一个跨浏览器不兼容的脚本,可能原因为:

  1. 使用了带前缀的私有方法,不能在其它内核中使用(比如moz和webkit);
  2. 使用了最新标准规定的实验性方法,不能被大多数浏览器很好地支持。

这些问题的根本原因在附录中有部分说明。实际上,由于浏览器内核变化多,网页规范的制定又几经波折。常常会为了采用哪种方式实现兼容焦头烂额。

笔者个人的建议是,要实现一个功能,如果Gecko(Firefox)不支持而WebKit支持,建议设法寻找其它的解决方案或者Mozilla自身规定的属性。如果唯独IE不支持,那么可以尝试IE的DHTML规范中的内容,然后分情况处理。

另外一个建议是,如果需要用多种方式处理,需要首先判断该方式是否可用;并且,使用某种方式的代码量最小,则优先放在前面,这样代码更容易辨别是使用了多种方案,而不是一长段代码最后增加短短的一行 else,这样就不容易被其它开发人员忽略。

附录

浏览器发展简史

这里简要阐述浏览器和Web的历程。

伊利诺伊大学是美国一所比较传奇的大学。整个目前的Web浏览器现状,大部分是由于一位名叫马克·安德森的学生开发出的Mosaic浏览器,这是互联网历史上第一个获普遍使用和能够显示图片的网页浏览器。

该浏览器在当时一度极红火,于是其发布单位所在的伊利诺伊大学决定分一杯羹。然而安德森不愿参与版权纠葛,最终毅然将所有原先代码抛弃,创办了新的公司,从源代码开始重新构建浏览器,并重命名为 Netscape,也就是网景。

后来,网景开始研究如何构建一种基于网络浏览器的操作系统。这使得操作系统巨头微软担心市场遭到威胁,于是便将原先Mosaic的授权买下,基于它构建自己的浏览器,也就是大名鼎鼎的Internet Explorer。

到了2003年,美国在线放弃网景,于是Mozilla基金会成立了。该名称源自于Netscape建立的同名组织,它的目的是让Mozilla及其产业能够在没有网景后继续生存下去。2004年,Mozilla基于网景的Gecko发布了首版Firefox。

直到2008年,网景果然失败并宣布倒闭,但是当时已经出现了另一种全新的浏览器内核,也就是WebKit。该内核比IE更快、更标准化,并且迅速发展。它在2007年进入iPhone平台,并迅速称为iPhone独一无二的排版引擎。

Web标准简史

W3C即万维网联盟,创建于1994年,是Web技术领域最具权威和影响力的国际中立性技术标准机构。它的主要工作是发表Web规范(称为推荐Recommendations)。一个“工作草案”由工作组审核并通过后称为“候选推荐”,组织内审核后变为“提议推荐”,最终才变成“推荐”,所需时间常常长达数年,所制定的规范权威性也很高。

HTML就是W3C规范的主要内容之一,在1990年发布第一版。直到1998年,W3C发布了XML规范,该规范规定了一种格式严格要求的Web信息的表示标准。由于HTML的格式宽松,因而产生了很多不规范的网页,于是W3C计划创建一种基于XML的严格的HTML,也就是XHTML。

另一个标准制定组织,WHATWG在这时出现了。WHATWG全名为“网页超文本应用技术工作组”,它成立于2004年,成立的原因是W3C意图放弃原版的HTML而力图发展XML,这一闭门造车的风格引起了浏览器厂商的不满。于是Opera和Mozilla着手创建这一组织,依旧保留原有的HTML规范,在此基础上制订HTML5,最终这也得到了W3C的承认。

这一组织认为HTML5规范应该更具有实用性,并增加了大量降低开发成本和易用程度的标签和功能。但是该组织把Web标准看作一个不断变化的、与时俱进的体系,与W3C制定可参考的规范的理念不同。不过目前WHATWG的规范可以像W3C的规范一样被信任和参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值