DHTML编写经得起考验的可移植代码

动态HTML(DHTML)技术——实际上是多项技术的组合,包括CSS、DOM和JavaScript——为Web设计者提供了多种选择,能让他们向其网页中添加动态菜单和各种导航的小玩意。但是,这些技术也带来臃肿的代码,导致浏览器互不兼容的问题和向老平台移植性的丢失。简而言之,用于HTML代码编写的动态选择越多,出现错误代码的可能性也就越大。但是只要遵照一些简单的编写原则,你可以保证自己代码的健壮性和高度的可移植性,而不用放弃对DHTML创新技术的巨大依赖。

第一:了解你的浏览器

浏览器互不不兼容是一个困扰Web开发人员多年的问题。但是在很多方面,随着浏览器和标示语言两者复杂性的增加,人们对其兼容性的关注有所减少。然而,有些结构上的冲突的确还在,尤其在你必须考虑自己页面的可访问性的时候。

例如,不是能够在Windows平台上运行的所有Netscape Navigator和Internet Explorer特性都能运行在Mac和UNIX系统上。而且不是所有能够运行在Internet Explorer 4.0上的HTML 4.0代码都可以运行在Navigator 4.0。(Navigator 4.0不支持HTML 4.0所有弹出文本的特性。)而且,

 1<button>标签对Navigator也不友好,诸如此类等等。这个互不兼容的单子很长,即便到现在也是如此。所以除了浏览器探测技术,你现在必须还要能够使用HTML、XHTML和CSS确认等。   
 2  
 3  
 4第二:编写允许功能缩减的代码   
 5  
 6跨平台所导致的错误是对健壮代码的一个重大威胁,但是向后兼容会更严重。尽管软件巨人们都在花大力气推广新版本,但是Internet Explorer和Netscape Navigator两者4.0以前的版本仍在大行其道,所以你的代码应该要能在其上运行——即使你使用的是DHTML的代码。   
 7  
 8缩减功能的概念在软件工程中十分常见,它是指对逐渐失效而非突发性失效有所准备。其主旨就是设计一种机制,让相当一部分功能能在不同环境导致性能降低的情况下获得保留。这个概念还被相当多地用于软件,谨慎的开发人员会预计有缺陷的运行条件,并按照部分功能在碰到错误的时候得到保护的方式编写应用程序代码。   
 9  
10在编写Web应用程序代码的时候这一点尤其重要。想一想吧:任何对Internet世界开放的Web页面都需要运行在任何版本、任何数量的浏览器上。由定义可知,没有什么HTML代码能够运行在所有的浏览器上;错误是不可避免的。Java在低于版本3的浏览器上运行时会出问题。对象模型特性在跨当前不同浏览器时会不稳定。有些版本的Navigator只有使用插件才能正常处理ActiveX。当前不同的浏览器对层叠样式表(CSS)的支持也不尽相同等等。这个问题清单也很长。   
11  
12有合格的设计者不仅应该为每个Web应用程序创建强健的错误处理机制,这要尽量多地考虑环境变化和潜在不兼容性的问题,还应该让应用程序的代码在碰到问题时能够保证更多的功能。   
13  
14第三:尽可能地让代码形象化   
15  
16冗余代码是编写易维护系统的最大障碍。创建函数或者子程序是程序员避免这一问题的自然反应,DHTML允许他们在这一点上的变通。   
17  
18使用脚本和函数能够让动态Web页面程序员把相同的代码捆绑进易维护的程序组。这样,以后维护代码的程序员就能够很容易地读取代码和明确程序的功能,但是捆绑代码还有一个更大的目的:传统的HTML只允许一个函数被分配给一个对象,而嵌入式脚本编写和函数的动态应用能够提供一段专用的代码供多个对象的多个事件使用。   
19  
20第四:让方法、类和继承为你服务   
21  
22动态HTML对象模型是Web设计者的福音,它能对事件处理使用面向对象的方法,这个方法会用到OOP的所有关键特性:类、方法和继承的使用。   
23  
24动态HTML对象模型让为对象分配属性成为可能,也让运用完整的连续性对点击事件设置可能的回应成为可能,同时能在你的路径里保持干净的易于维护的代码。大多数浏览的大多数版本都支持面向对象的特性,这让它们能够轻易地实现跨平台和跨版本。   
25  
26DHTML功能强大的工具   
27  
28尽管DHTML能够提供强大的功能,但是代码冗余、不同浏览器和浏览器不同版本之间的兼容性、放置不当的代码,以及难以维护的代码都太容易出现了。在有了正确浏览器的正确版本以后,你可以留下一个画面非常优美和功能极其强大的页面——但是一个不能容错以及千百万用户无法使用的页面是没有什么用的。以上所讲的原则能够有助于你打造出强大的经得起考验的代码。</button>
Published At
Categories with 网页设计
Tagged with
comments powered by Disqus