外贸搜索营销,搜索营销,易发现性网站,信息本土化营销,多语种优化,W3C Web标准,外贸整合营销

2009年06月09日

网站重构

当我们提及“现代”或者“符合标准”浏览器,就是指该浏览器能够理解和支持HTML和XHTML,Cascading Style Sheets(CSS),ECMAScript 及W3C Document Object Model(DOM)标准。所有这些形成的标准,允许我们超越表现层的标记、不兼容的脚本语言,以及它们所造成的永久的淘汰怪圈。

在写这本书的时候,类似的浏览器包括:Mozilla 1.0和更高版本、Netscape Navigator 6及其更高版本、Windows系统下的Microsoft Internet Explorer 6及其更高版本、Macintosh系统下的Microsoft Internet Explorer 5及其更高版本、Opera 7。若需要浏览器的比较列表,可以看本书第3部分附录A“现代浏览器:品质优良的、低劣的和非常低劣的”。注意那不是一张详尽的列表,我们试图在本书出版前列全每一个符合标准的浏览器。虽然我们称这些浏览器“符合标准”,但请记住本部分的“在开始之前”中说过:没有一个浏览器能够完美地符合标准。

缺少完美浏览器不是逃避标准的理由。目前有上百万人使用Windows系统下的Internet Explorer 5或者5.5。从标准的角度出发,这些浏览器都是劣质的,包括IE6/Windows、Netscape 6+,等等。如果你的访问者使用的是IE5/Windows,你就可以抛弃Web标准?你是不是应该告诉使用IE5/Windows的人去升级浏览器,否则就拒绝他们?我们认为不应该这样,符合标准的设计和开发并不是说:“只为最新的浏览器版本设计”。

同样地,使用XHTML和CSS不必告诉Netscape 4用户去做大的改变。一个设计合理并采用标准的站点,在Netscape 4和其他符合标准的浏览器中看,不一定每个像素都要一样,事实上,通过你的设计技巧,它们看起来可以完全不同,这样做更被认同。我们将在本书第2部分“设计和构建”中解释其中原因。

1.1.1  为新工作新代码

现代浏览器不仅仅只是老浏览器的一个新版本,它们的基础也发生了变化。在很多案例中,新版本完全被重新设计,Mozilla、Netscape 6/7浏览器不是Netscape Navigator 4的新版本;IE5+/Mac也不是IE4 /Mac的简单升级;Opera 7不是基于老版本的代码开发的。这些浏览器已经为新工作写了新代码,也就是说,能够尽可能地、完美地、更贴切地符合本书所说的标准。

与之对比,20世纪90年代的专有浏览器(Netscape,Microsoft)技术很少考虑标准,老的浏览器完全忽略了一些标准,它们也造成许 多开发的麻烦。例如,如果浏览器不支持Portable Network Graphic(PNG)标准,那么开发者也不会使用PNG图片,这都没问题。可是麻烦在于,那些老浏览器嘴上说得好听,要支持一些标准,但实际上只是支 持了部分,甚至是错误的支持。比如漫不经心地支持基础的HTML标准,造成混乱的Web发布环境。

当病人发生阑尾炎,有资格的外科医生将做完整的阑尾切除手术。现在想像一下,一个新手只切除了一半阑尾,还随意刺伤一些其他器官,最后又忘记缝合伤 口,结果会怎样。我们为这个恶心的假设向您道歉,但这就和老浏览器对待Web的健康一样:它们对标准的支持是极其不完整的、不合格的、冒险的。

如果Netscape 4忽略作用在<body>元素上的CSS规则,在页面的每一个结构元素中随意增加一些空格,如果IE4能正确读取<body>标 签的CSS,但是对齐很糟糕,那么哪一种CSS写法是安全的呢?一些开发者选择根本不写CSS;另外一些开发者则针对IE写一个样式表,针对 Netscape 4再写一个样式表。为弥补跨平台字体和UI的细节差别问题,开发者或许还要定义不同的样式。这样做还没有考虑浏览者用的是Windows还是Mac系统 (对于那些UNIX或者Linux用户就更糟糕了)。

这些CSS问题只是九牛一毛。浏览器在HTML、标记表现和脚本语言上可能都不支持CSS。没有一个正确的方法组织页面内容(是的,还有一个正确的 方法,但是没有浏览器支持);没有一个正确的方法设计页面(是的,有一个,但没有浏览器支持),也不能在页面上增加复杂的交互行为(最后有办法了,但是老 浏览器不支持)。

如果希望站点能够在多个浏览器或操作系统中正常工作,设计师和开发者在艰难应付不断增多的兼容问题的同时,还要为每一个不同的浏览器定制设计(非标 准的)标记和代码。在今天来说这是错误的,因为现在的浏览器已经支持同样的开发标准。然而事实上这样的情况仍然在继续,不必要的浪费资源,切分Web,导 致网站的可访问性和可用性更差。

用非标准的标记和代码创造多个版本,每一个都迎合不同浏览器的“癖好”,这是困扰大多数网站“永久淘汰”的根源,目标总是在后退,游戏规则永远在改变。

尽管这种做法是昂贵的、无效的、不可忍受的,但实际工作中仍然有很多人这样做。面对一个支持Web标准的浏览器,许多开发者仍然把它当成不支持,因 此,尽管IE6能够处理标准的ECMAScript和DOM,而人们却继续写探测脚本来判断浏览器是否是IE6,并调用针对IE的脚本来适应它。尽管 Netscape能够处理标准的ECMAScript和DOM,他们仍然习惯于为最新的Netscape浏览器写独立的脚本和代码。

用一个例子来说,在今天有利于标准的环境下,浏览器探测技术和针对性的版本创建是不必要的。事实上,这样做更加糟糕,在不断升级变化的情况下,不是所有的站点管理者都能负担得起,因此探测脚本常常失败。

例如,在Windows系统下,Opera浏览器将自己定义为IE,这样做主要为了避免被一些只允许IE访问的网站(比如许多银行站点)屏蔽。但是 为IE专门写的脚本很可能在Opera浏览器中失败。当Opera浏览器定义自己为IE(这是安装时的默认值),并且开发者写了IE专有脚本时,访问网站 就会失败,用户会受到极大挫折。用户有权选择他们的用户代理(User Agent)和强迫Opera以自己的身份而不以IE来替代,但是只有很少用户知道这样的操作,他们也不需要知道。

除了私有脚本外,开发者还写那些需要占用两倍带宽的表现层标记,或者提供一个难以被搜索引擎、非主流浏览器和设备访问的服务页面。这些策略会导  致很多问题,他们被迫进行解决:在不同浏览器下看到的界面不一样。

内容来源:杭州临企@搜索营销知识中心