做dhtml开发,除了调试不是十分的方便外,我们还需要或多或少的考虑同一浏览器的版本问题。而比这些问题更让复杂dhtml开发郁闷的,却是对cross-browser浏览的支持。正好有人问到这个问题,我就简单的说说我的看法。
目前我是专做IE上的dhtml开发,所以我blog里的脚本开发分类都叫做"JScript&DHTML",而不是叫做"JavaScript&DHTML",也就是说我默认提供的事例讲解和代码示例都以JScript为准,因为我现在的工作也没有时间和必要让我去别的浏览器上验证我所发的脚本。如果有写JavaScript的地方,那就是我确认那部分内容JScript和JavaScript是兼容的。
关于cross-browser其实细说起来分为两类。第一类是狭义的cross-browser,就是说浏览器的内核版本之间的脚本代码及DOM版本实现上的兼容性支持(这里包括同内核浏览器比如:MyIE现在叫Maxthon遨游,昵称:马桶、Sleipnir、GreenBrowser简称GB、GoSuRF、kkman等的内核版本);第二类是广义的cross-brower,指的是浏览器内核不同实现间的脚本代码及DOM兼容性支持。前者的代表就是我们常说的IE5、IE5.5及IE6.0甚至IE6.0sp1这样的浏览器之间的差别,后者就是诸如:IE、Opera、Mozilla、Firefox、Netscape、Konqueror、Safari和iCab等。
我们接触到的狭义cross-browser支持,大多是在IE上开发dhtml功能,由于IE从4.0到6.0sp1之间对JScript引擎和DOM实现做了较大的修正和改进(有的是实现了更高的w3c标准版本)。当然别的浏览器也同样有这样的问题,比如Netscape从2.0b3到4.0版本,经历了将JavaScript引入浏览器并达到一个可用水平的变化。这样的cross-browser更象是做软件的向后兼容,但是这样的问题一般不会太麻烦,毕竟要求用户升级同一种软件,而不是完全更换是比较容易让人接受的。另外同一浏览器的升级毕竟还是在其原有的设计框架上,而不会带来整个结构翻天覆地的变化。不会像今天的IE和ff,它们在Script和DOM处理上的不同,真是让人巨郁闷,以后我会再讨论。
那么广义的cross-browser我又把它分为以下几种情况,一是Portal类的网站(包括各种门户以及各类机关、公司、组织等的官方信息发布的网站),二是普通网站(包括论坛、个人网站、blog,以及一些不十分正式和重要的信息发布网站),三是专用网站(包括各种部门级信息网站、企业ERP网站、OA系统等专有系统网站)。
从上面的简单分类就能看出,cross-browser支持任务最严峻的就是第一类Portal网站了,而且这类网站还没有办法逃避。当然是不是只要是这类网站就一定要支持cross-browser呢?其实这个完全是和建网站的人对网站的期望有关系的,就是说你希望你的网站能给带来什么CI来决定的。比如Google,它的Gmail的Web浏览方式被很多人认同,可是那个Pretty的Web Mail是一个非常复杂的dhtml开发工程。反过来,如果Gmail不能支持cross-browser,那么Google是不是给人感觉很矬呢?另一个相反的情况是,很多的xxx.gov.cn网站,根据其重要性来看它们完全因该属于第一类,可是它们很多却没有很好的支持cross-browser。这就是他们对网站的期望不高,没有觉得网站能给他们带来什么好处,而只是为建网站而建网站。同时,没有任何人能说由于某xxx.gov.cn做的象一坨屎,就要他们领导下课。
第二类普通网站,对于cross-browser来说其实是可支持也可不支持的。当然都能支持是最好的了,可是那需要成本的啊。不是大声说:支持!支持!!支持!!!,就自己支持了。这里面的论坛类网站,为了自己能有更多的潜在用户访问或注册,是会积极主动的支持cross-browser。当然这里的论坛也分很多种类型,如果是专注于Windows平台技术开发,我觉得对cross-browser做有限的支持也就足够了。至于其它的小站点,除非是为了展示dhtml技术和JavaScript特效,否这也应该做有限的cross-browser支持,当然程度可以更低一些。
第三类专用网站,这个需要根据其复杂度来区分,如果dhtml技术仅限于表单校验和一些简单的网页特效,这样的系统是应该支持cross-browser的。如果系统中有很复杂的dhtml开发,比如像Gmail,就需要仔细考虑是否支持cross-browser了。对于企业部署,其实用户习惯是可以教育的,就是要求使用IE6,甚至更过分就要求IE6sp1,很多时候都是不难办到的。对于这样的系统,如果dhtml难度还很大,而且完全不能说服用户,他就是要IE,并且至少firefox是要支持的。那么怎么办呢?那就申请更多的resource,支持就是了。
最后说漏了一点,关于Web控件的开发,由于作者的期望是自己的控件被广泛的使用,所以它支持cross-browser的出发点,和前面说的论坛类网站的出发点其实是相似的。有空了再讨论一下不同复杂度的dhtml开发时cross-browser支持解决方案。
本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。