关于“预留退路”的思考

在支付宝UED博客上看到了老鱼的“浅谈产品设计中的可用性和可访问性”。全文中心思想是“国内大部分Web产品在设计时往往忽略可用性和可访问性问题”,对于这点我基本上是认同的,但是对于文章里举的例子,一个“支付宝登录界面如果禁用JS就无法正常工作”的例子,也就是一个“预留退路”的例子,我有话要说。

“预留退路”这个概念我最早是从《网站重构》上看到的,简单来说,预留退路是指当访问者禁用CSS或JavaScript时,网页仍然能正常显示内容。当时对这个概念印象深刻,并且在之后一段时间内也一直以此为标杆。但随着对互联网、对web的理解越来越深,随着项目开发越做越多,我逐渐开始动摇。不可否认,“预留退路”在安全性方面是十分必须的,服务器端必须把好最后一道关,不能相信客户端、不能相信任何用户输入。但在用户体验方面,在可用行方面,我认为预留退路的重要性远不如许多UE设计师们声称的那么重要。

首先,目前的网站,已经不再是以前那种“网页文档”的集合了。以前的网页的主体是内容,单向性很强。JS等交互功能只是内容上的调料。而现在大量兴起的web应用,已经把网站推向了“软件”的境界。浏览器只是一个容器,网页只是一种呈现方式,交互才是真正的重头戏。虽然交互的目的仍然是内容,但这里的内容已不再是传统意义上的html代码,而是数据,交互是获得数据的必经手段,缺少交互,数据(内容)无从谈起。在这种情况下,预留退路显然不是一条不可打破的禁忌。

其次,预留退路的提出是在浏览器大战的年代。在那个时候,主流浏览器对JS的支持十分混乱,保证一个网站在所有浏览器上都做出正常的表现很难。开发者们在恶劣的开发环境下学会了自我约束,限制js的使用,预留退路作为下策,以防万一。而在现在,web标准日趋普及,浏览器们的支持标准也渐渐统一,跨浏览器平台的交互功能实现将越来越简单。虽然移动设备那边可能还不是很完善,但统一的标准必然是未来的趋势。

最后,尽管如老鱼所说,“很多交互设计师都会想当然的认为,类似这样的应用场景受重群体是很小的,也许真实的数据会让你大吃一惊!”,可我至今没有见过实际的统计数据。我身边有用Opera的,有用Linux的,可至今没有禁用JS上网的。倒是在豆瓣上见过一个,不过他是个Geek,关闭JS是有他自己的目的的,并且他也很清楚这样做的后果。相信那些不开JS上网的人,大部分都是像这个豆瓣用户那样的中高级用户,他们很清楚自己在做什么,以及这样做之后可能会遇到的情况。而预留退路真正需要照顾到的,那些无法使用JS自己却一无所知的无助的用户们,我绝不认为其总量会是个“让人大吃一惊”的数字。

综上,我认为“预留退路”不是个应该鼓吹的概念,更不是个不可打破的标准。中国没有408条例,所以更多的时候要根据实际需要来抉择,不要一味迷信传统。

最后,感谢土豆网的Dexter.YY,您的回信让我受益匪浅。

关于“预留退路”的思考》有10个想法

  1. z.Yleo77

    看了博主的观点,在看到lifesinger 的观点,不过现在来看,web 站点大部分应该属于app范畴,blog,sns这些相对内容较多一些,其实从这点来考虑,区分开网站用途,切合实际,来衡量是否要将无侵入,渐进增强这些玩意考虑进去,我想这是关键。

    回复
  2. meteoric_cry

    # 20:57 一个有趣的现象:博客中涉及百度、腾讯有点pk性质的文章,回复都很火热。但真正的技术文章,回复则寥寥。业界的浮躁可见一斑。 #

    这是一种社会现象--只观望而不学,只学而不坚持。   

    人们做事情很多的时候就是在选择,一生之中多数情况下是在选择,选择工作 但有的时候也是没得选的
      所以珍惜选择的权利,在选择之中寻找一个平衡点,对自己、对别人也是最好的选择.

    回复
  3. lifesinger

    预留退路是一种渐进增强,要区分web apps和web pages

    对于web pages来说,以内容为主,应该考虑预留退路,以让更多user agent能访问

    对于web apps来说,内容不再是最主要的,功能才是最需要重视的,这时预留退路仅需一个友好的noscript标签提示用户即可

    另外,预留退路不是考虑禁用css和js的场景,而是考虑对css和js不支持或支持不好的user agent,包括搜索引擎爬虫,语音阅读器,RSS聚合程序等,这些才是真正需要考虑的

    会给firefox装noscript的,都是高级用户,知道怎么禁,也就知道怎么开,无需我们费心的

    欢迎讨论:

    可访问浅析: http://lifesinger.org/blog/?p=966
    JavaScript渐进增加:http://lifesinger.org/blog/?p=786

    回复
  4. iZ

    坦诚的说,每一次做东西,暗自里是在琢磨和动摇。“可我至今没有见过实际的统计数据”。很多钻死胡同式的努力究竟是否有价值,值得思考..或者判断一下得失。

    回复
  5. 老鱼

    再补充一下,其实文章的中心思想是,让交互设计师和前端开发工程师都明白,设计和技术是不能分割的,举的这个例子是为了说明了解技术的实现方案对交互设计师在做产品设计的时候非常有帮助!

    就像我后来提到的语义化的DOM结构对”语音识别器”的应用,所有的这些只是想推出我的理念,不论是前端开发工程师还是交互设计师,都是围绕用户体验的,不要单纯的把自己当作是开发或者是只提IDEA的人.

    回复

发表评论

邮箱地址不会被公开。 必填项已用*标注