关于不唐突性与渐进增强和平稳退化的比喻
2007年11月13日 原创
先看一看不唐突性的定义(摘自《Advanced DOM Scripting》第一章):
通过使用某些技术,当浏览器支持相应功能时文档会得到增强(渐进增强),而当浏览器不支持相应功能时,文档被退化(平稳退化)。但不支持相应功能的浏览器也会获得同一文档的具备相同信息量但却不一样的视图。这两个术语经常被交替使用,但任何一个术语都包含如下含义:并非所有浏览器都遵循相同的标准创建,而且不能对所有浏览器一视同仁。同理,谁也不能为了迎合少数人而强迫所有人都接受一种低质量的服务。
如果要打比方,还拿我们都已经司空见惯的电视来说事好了(参考内容):
我们家有两台电视,其中一台是黑白的;另一台是彩色的,而且还带数字机顶盒。我夫人看彩色的,而我看的则是黑白的。歌华有线提供的电视信号是数字的、彩色的,而且也是不唐突的。


当电视信号通过彩色电视播放时,我夫人会看到“渐进增强”的彩色画面,她不仅知道五个福娃各是什么颜色,并且还能使用数字机顶盒提供的类似电脑式的操作界面,预约、点播电视节目、查看未来一周的节目预告。而当我通过黑白电视来观看同样的电视节目时,看到的则是被“平稳退化”的黑白画面,五个福娃的颜色对我而言只有深浅不同而已。
由于电视信号中包含着对象检测代码,而且是不唐突的,当这种信号接到我家彩电中时,它首先会检测当前环境下是否存在数字机顶盒,如果检测结果返回 true,说明我家电视(彩电)已经接驳了数字机顶盒,而且勿庸置疑能够显示彩色信号,于是将专门为数字机顶盒准备的数字信号交给了机顶盒处理,再由机顶盒根据电视的数字和模拟类型进行信号的转换和呈现,同时提供了丰富方便的屏上菜单操作界面。这就是“渐进增强”的结果。
而当信号遇到我家的黑白电视时,它先检测有没有数字机顶盒,结果返回false,于是信号中的与数字机顶盒有关的部分被简单地跳过了;然后,它又检测显像管是不是彩色的,结果还是false,于是信号中与彩色图像有关的部分也被简单地跳过了。经过这两次“平稳的退化”,信号中只剩下基本的黑白图像了,但这对我古董级的黑白电视来说已经足够了。
——最后,虽然我看到的图像没有我夫人看到的那样五颜六色,而且也不能预约节目、查看预告,但新闻内容、电视剧情节一样也不会少--只不过没有那么优雅罢了!
通过以上例子可见:
1. “不唐突性”与“渐进增强”和“平稳退化”的概念是相辅相成的。
2. Web开发人员目前的任务就是开发出具有不唐突性,也就是能够根据浏览器能力实现渐进增强或平稳退化的Web应用来。
PS:为保证所举例子相对贴切,其中有意忽略了信号对电视频道的“平稳退化”,因为那样将不符合“不唐突的行为增强会使具备不同能力和对象的浏览器获得同一文档的具备相同信息量但却不一样的视图”这一定义。
本博客专注于Web前后端技术和技术翻译。目前正在翻译《JavaScript高级程序设计(第2版)》。新浪微博(t.sina.com.cn/lisf),Twitter(@cncuckoo,仅仅用于跟踪国外牛人;我翻不了墙,无法接受各位朋友的follow,抱歉!)