ajax Alex Bosworth’s Weblog 最近有一篇 《Ajax Mistakes》,列举了一些开发者在应用 AJAX 技术时容易犯的一些错误: 1、Not giving immediate visual cues for clicking widgets. 2、Breaking the back button 3、Changing state with links (GET requests) 4、Blinking and changing parts of the page unexpectedly 5、Not using links I can pass to friends or bookmark 6、Too much code makes the browser slow 7、Inventing new UI conventions 8、Not cascading local changes to other parts of the page 9、Asynchronously performing batch operations 10、Scrolling the page and making me lose my place 其实就目前而言,AJAX 应用还不是很成熟,很容易就会导致复杂度的爆炸性增长,所以暂时还是在部分功能上进行应用比较合适,否则你会陷入到无止境的调试的恐怖深渊 。比如,在用户注册提交前,使用 AJAX 进行用户名判重的操作是个很不错的应用;还有就是多个下拉列表框,他们之间存在线性依赖关系,则可以在选择第一个下拉框之后,使用其选中的值加载第二个下拉框中的数据,这也是个很好的应用(Demo)。总之,在成熟模型出来之前,还是不要大规模应用 AJAX 比较好,而且每一种技术都有其优缺点,虽然 AJAX 很流行,但它并不是适合任何场合的,更何况当前 AJAX 还有个很棘手的问题,那就是服务端无法及时准确地对客户端用户行为、状态进行跟踪记录,而通过客户端自行跟踪记录又极易出错。
当用户点击控件时未即时给出可视的提示,用于告诉用户现在正在加载数据。
破坏了返回按钮。返回按钮是标准网站用户界面的重要特性,不幸的是,返回按钮并不能很好的和 JavaScript 相吻合。
使用链接来修改状态。很多用户习惯于使用链接进行浏览导航-执行 GET 请求,而如果使用链接来改变状态将会使这些用户感到困惑。这个问题可以参考 Google’s new web accelerator breaks webapps 和 Google Web Accelerator: Hey, not so fast - an alert for web app designers,尤其是后边这篇文章,讲述了 Google Web Accelerator 的工作原理,它会对当前浏览页面的所有链接所对应的页面进行预先获取进行缓存(Link Prefetching 机制),而这种工作方式将忽略链接中的 JavaScript 操作继续向前,比如你有个删除的链接,点击之后是弹出一个 JavaScript 的确认框,询问用户“是否确实想要删除?”,而 GWA 则是很直接地执行了该动作,最终导致用户点击这个链接的时候,出现了预想不到的结果。
出乎预料地闪烁和改变部分页面。AJAX 使用的是异步消息处理机制,这意味着很难准确的预知到消息会在哪一刻进行处理,所以页面在获取到消息之后需要改变的页面部分应该限制在较小区域而且要较为固定,免得吓着用户 。
网站的另一个重要功能是我可以将 URL 发给朋友,使得他们可以看到我所看到的一样的东西,而且还可以对 URL 进行收藏,使我可以在任何想看的时候回到这个地方。由于 JavaScript 可以动态生成页面用于替换从服务器加载的最初页面,URL 也就失去了上述功能。很多 AJAX 应用都在思考这个问题,有些为了满足这种需求而专门地构造出固定链接(permalink)。
过多的代码使得浏览变慢。
自作聪明地发明新的 UI 约定。新的 UI 界面及操作习惯会导致在用户使用你的应用程序的时候感到非常困难,而且他/她还要花时间去学习如何使用。
不要只顾局部改变。使用 AJAX,你必须在考虑局部改变的同时考虑到整体的画面协调。
异步地执行批量操作。
自动滚动页面,导致用户丢失自己先前的浏览位置。
AJAX Mistakes
80酷酷网 80kuku.com