网络编程
位置:首页>> 网络编程>> JavaScript>> 开发保留标准的浏览器功能的AJAX应用(2)

开发保留标准的浏览器功能的AJAX应用(2)

  发布时间:2008-02-03 14:03:00 

标签:ajax,浏览器,XML

为什么AJAX应用经常性的破坏了后退按钮?

我们今天所知道的WEB牢固的建立在以下三个原则的基础上:

使用(D)HTML建立的界面


使用HTTP为客户/服务器通讯

使用URIs寻址

上面的原则决定了我们所获取的WEB应用有一定的局限性,而AJAX应用正是通过冲破这种局限性的限制而使得界面变得更加丰富。正像我以前的文章:A Backbase Ajax Front-end for J2EE Applications所解释的。AJAX引入了广泛使用的java script(AJAX中的J)来创建丰富的UI界面控制器和交互。AJAX也引入了异步的XML通讯(AJAX中的A和X),这是通过引入XMLHttpRequest对象来载入新的数据和表现层逻辑,而没有页面刷新。然而,当前的AJAX模型,不能够定位如何处理URIs。

作为改变使用(D)HTML和HTTP的一个直接后果,AJAX应用破坏了作为WEB基本交互风格的后退按钮和其他的元素。在本文余下的部分,我将解释如何在AJAX方式下通过处理URIs来修补这种破坏。我首先将说一说为什么URIs会和传统的WEB应用的交互有关系。


用户交互用术语来说就是用户界面的状态发生了改变。终端用户发起了状态改变,浏览器客户端通过发送页面请求到服务器的方式来处理状态变化(REST原则),服务器通过发送一个新的页面和新的URIs到客户端来产生一个新的界面状态。


简而言之,每一个用户交互是这样别处理的,通过服务器的循环产生如下的结果:

产生一个新的页面


产生一个新的URI

因为浏览器记录了连续的URIs到它的历史堆栈里,并且将当前的URI显示在地址栏里,WEB的可用性特性就被激活。在地址栏里,用户可以拷贝URI,并且可以把它发送给朋友。当用户点击返回按钮或从email里粘贴一个URI到地址栏里,一个到服务器的循环就被触发。由于服务器负责状态管理,那么服务器就能产生相应的页面。

AJAX应用和传统的WEB应用的最大的不同在于AJAX应用能够不通过页面的重载而处理用户的交互。通过XMLHttpRequest对象从服务器载入数据就是一个例子。使用java script处理客户端drag-and-drop是另外的一个例子。


在上面的两个例子中,状态的变化不是通过产生一个新的URI得到的。因此,点击后退按钮或者刷新按钮不能得到想要的效果,并且在地址栏里没有deep-link的URI。


为了提供传统的WEB可用性特性,AJAX应用需要像传统的WEB应用一样来处理URIs客户端。因此AJAX应用需要做如下的事:

当一个客户端状态变化时,产生一个URI,并且发送到客户端

当一个新的URI被客户端请求时,保存状态


做到了上面的两点,浏览器的历史纪录将会工作,浏览器的地址栏将显示一个能发送给朋友的URI。


另外一个困难是决定什么时候AJAX引擎应该做上面的那两件事(例如,什么样的状态变化将导致产生一个新的URI)。在传统的模式中,每一个页面刷新都导致一个URI的更新。在AJAX模式中,每一个客户端事件都可能产生一个URI到浏览器堆栈。交互设计师和开发者将决定什么样的状态变化是有意义的。因而只对那些有意义的状态变化产生新的URI。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com