前一阵子一直在研究Ajax和Prototype库,有点感触,正好又看到国外的一篇blog(2005年的……),就翻了一下,希望对那些正在用或者考虑使用Ajax的同仁们有点帮助,少走一些弯路。

    这篇文章写的是Ajax设计中的10个常见错误。

 

 

1.  在点击部件后不即时提供视觉线索

如果我点击的某个部件会引发Ajax行为,那你最好给我一点视觉线索让我知道有些工作正在进行中。一个例子就是Gmail右上角的loading button:当我在Gmail里做了什么之后,右上方的红色小方块就会显示网页正在读取,以此来补足在网页读取时Ajax不会引发正常的网页UI变化(注:应该是只诸如ie右上角飘动的旗子那类UI部件)

 

 

2.  破坏了“后退”按钮

在标准网站用户界面中(注:应该值的还是浏览器),“后退”按钮是一个很有用的功能。不幸的是,后退按钮和Javascript不能很好的配合。保持“后退”按钮的功能正是不采用纯Javascript网络应用程序的一个主要理由。

 

 

3.  用链接来改变状态(Get请求)

正如我在以前的帖子里提到的,Ajax应用程序为那些认为GET操作不改变状态(注:服务器状态)的用户带来了很多问题。改变状态的链接不仅仅给(注:搜索引擎)的机器人带来了许多问题,还使那些习惯于链接驱动的浏览的用户在面对改变状态的链接时变得困惑。

 

 

4.  出乎意料的闪烁或改动网页的某些部分

Ajax中的第一个A代表了Asynchronous-不同步。不同步信息的问题是当它们出乎用户意料地弹出时,这些信息将使用户非常困惑。网页的不同步改变应该只限于有限的被定义区域,而且应该被明智地使用;那些在我并不想注意的地方出现的闪动的信息使我回想起那段使用HTML blink tag的日子。

 

 

5.  不使用能被我发送给朋友或是加紧书签的链接

网站的另一个很好的功能就是我可以把URL发送给别人,使他们可以看到我正在看的东西。我还可以把网站首页加进我的标签,以后再回来浏览。Javascript,或者进一步Ajax应用程序,可能会给这种使用方式带来很多问题。由于是Javascript在动态生成网页而不是服务器,URL就被从这个过程中剥离了,也不能再用来作为浏览的索引了。失去这个功能是很不幸的,这也正是很多Ajax网站中特别设立永久链接的原因。

 

 

6.  过多的程序代码造成浏览器变慢

Ajax带来了一种制造更加有趣的javascipt应用程序的方法,但不幸的是,有趣通常意味着更多的程序代码正在运行。更多的代码运行给浏览器带来了更多的工作,这意味着对于一些大量使用javascript的网站,特别是程序编的不太好的那些,你需要一个强大的CPU来保证功能可以迅速地运行。事实上,CPU的问题以前确实是javascript功能的一个限制,仅仅因为现在的电脑快了很多并不表示这个问题已经不存在了。

 

 

7.  发明新的用户界面惯例

使用Ajax常犯的一个重大错误是:“点击这个不明显的东西来获得另一个不明显的结果”。当然,用户在使用一个网站一段时间以后可能会意识到如果在这个div上点击并且拖拽的话,他们可以把它移到另外一个位置,但是由于这不是一个常规的用户体验,你还是增加了学习你的网页所需的时间和难度,这对任何一个应用程序来说都是负面的。

 

 

8.  局部的改变不能影响网页的其它部分

由于Ajax/Javascript给了你对网页内容的特殊控制,你会很容易变得对某个部分过度专注以至于丧失了大局观。这方面的一个例子就是Backpackit的标题。如果你改变了一个Backpackit的网页标题,他们会立刻替换掉旧标题,并且会记住改变右边的标题,但是他们确不该变HTML Head中的标题(注:这段翻译的有点模糊,有兴趣的可以参考一下那个网站)。在使用Ajax时,你需要估计到全局即使改变只是局部的。

 

 

9.  不同步地进行批处理

有了Ajax你可以使很多对表单输入的改变立刻生效,但那可能会造成很多麻烦。比如当我勾选了很多会异步发送信息到服务器的check box时,我将会丧失对checkbox整体状态改变的明晰,而且那些涌现出来的checkbox改变提示也会很讨厌并且分散注意力。

 

 

10. 页面滚到造成难以定位

在一个网页中弹出文本会造成的另一个问题是这些文本可能导致页面滚动。我可能正在开心地读着某篇文章或者在一个超常的列表中查找信息,而这时异步javascript请求决定把一个位置位于远远高于我的阅读位置的段落删掉,因此打断了我的阅读。这绝对是令人反感的,而且还会我还要浪费时间来重新定位。

 

 

 

 

对原文有兴趣的朋友可以看这里。还有另外一个关于Ajax应用误区的网站,也值得Ajax开发人员关注一下。


1条评论

  1. 自己前些日子翻译的一篇老外文章,有段历史了。不过因为最近一直在做Ajax相关的东西,感觉这个概念确实是把双锋剑。用不用Ajax?用多少?用在哪里?个人认为这些问题的重要性其实已经比Ajax这个概念本身更加重要了。……更多评论尽在“板儿砖”(crane在“板儿砖”拍你)

    ===

    板儿砖–长假,轻拍自己和家人,休息吧!

发表评论

评论也有版权!