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

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

AJAX应用因为它们的表现力的丰富、更加互动和更加迅速的响应得到了赞扬声;这些优点都是通过使用XMLHttpRequest对象来动态的载入数据而获得的,而不是重新载入新的页面。在大量的宣传和刺激中,却有一些批评的声音指出,AJAX应用破坏了一些重要的浏览器特性,这其中包括对前进/后退按钮的支持。


本文首先解释了为什么除非明确的将那些功能做进AJAX应用,否则前进/后退按钮和其他一些浏览器功能不能正常工作。然后简单的列出开发者如何解决上述问题,最后我们将详细的看一看Backbase AJAX引擎是如何提供对前进/后退按钮和其他一些浏览器功能的支持的。

AJAX应用需要一个后退按钮吗?

AJAX许诺允许开发者仅仅使用标准的浏览器技术开发有更好用户体验的和高度互交的WEB应用,这种技术常常是指DHTML。

以前,开发者常常不得不在rich和reach之间做出选择;前者是指具有高度互交性的交互式的用户接口,后者是指一个运行在所有WEB浏览器上的、不用额外的安装机制的前台终端。AJAX应用将使得前台终端既“rich”又“reach”。

但是到底什么是真正的一个界面“rich”的含义呢?而什么又是一个应用“reach”的含义呢?


“rich”的概念不容易定义,但是容易被直观的感受。如果你看到一个“rich”界面,你将明白什么是“rich”界面。桌面应用像微软的Office就是一个“rich”的界面。一个“rich”的界面使用先进的UI控制技术,如Tabs和上下文菜单。它们提供前进的互交手段,像当它们获得焦点的时候,UI元素的drag-and-drop和highlighting。传统的浏览器应用不是“rich”的。它们被限制在一些简单的控制器里,像Form,而交互只是简单的依靠点击链接到一个新的页面。看看微软的email客户端就能看出其中的差别:Outlook是“rich”的,而hotmail则不是。

AJAX应用因为它们的富有的表现力而得到表扬,Google的Gmail就是一个经常提及的例子。其他的Google所做的AJAX应用,如Google Suggest和Google Map。微软即将发布的Web mail客户端,代号为:“Kahuna”,或者Backbase RSS Reader也包含了高级的控制器和互交的模型。看一看Dan Grossman的列表:Top 10 Ajax Applications,那里是一些激动人心的关于“rich”界面的列表。

因此我可以得出结论,AJAX应用很明白的满足“rich”的概念。但是它是否满足“reach”呢?


在AJAX应用的绝大多数基本表单里,如果界面运行在一个WEB浏览器里,那么这个应用是“reach”的。AJAX应用是基于标准的浏览器的,因此能够被一个浏览器所访问。

但是,仅仅被浏览器所理解还是不够的。Jakob Nielson在他的文章Flash: 99% Bad里,指出Flash:“破坏了WEB的基本的交互风格”。在使用WEB应用的时候,终端用户期望一个确定的交互风格。应用需要提供传统的WEB交互风格,并且提供如下的可用性特性:

必须提供“后退/前进”按钮,用户能够浏览网页历史纪录

用户能够使用书签


必须提供Deep links,以便用户能够将其通过email发送给朋友或同事

必须提供“刷新”按钮,用来刷新当前状态,而不是通过重新初始化应用来获得


开发人员可以通过使用“view source”来查看源代码


终端用户能够使用“find”来搜索页面

搜索引擎能够对网页编索引,能够产生一个Deep link来搜索它们


看一看10个顶级的AJAX应用,表明大多数的当前AJAX应用的确破坏了WEB的基本交互风格。在接下来的部分里,我们将看一看为什么很多的AJAX应用会这样。

标签:ajax,浏览器,XML
0
投稿

猜你喜欢

  • 通过LogMiner实现Oracle数据库同步迁移

    2024-01-28 05:48:49
  • Python模块WSGI使用详解

    2021-02-19 00:05:27
  • 浅谈Pytorch torch.optim优化器个性化的使用

    2023-12-19 08:47:12
  • 使用python flask框架开发图片上传接口的案例详解

    2021-12-26 05:54:30
  • 一分钟带你掌握Python中pip的安装与使用方法

    2021-02-10 10:38:12
  • JSP学生信息管理系统设计

    2023-07-13 03:37:30
  • Python迭代器Iterable判断方法解析

    2023-06-11 15:37:19
  • Python实现控制手机电脑拍照并自动发送邮箱

    2022-10-08 01:52:33
  • 交互设计实用指南系列(12)—避免出错

    2010-04-12 13:02:00
  • Python实现的matplotlib动画演示之细胞自动机

    2022-05-23 15:49:09
  • Oracle数据库处理多媒体信息

    2010-07-16 13:01:00
  • pytorch 准备、训练和测试自己的图片数据的方法

    2021-02-27 13:54:35
  • python基础之内置函数

    2022-02-28 09:15:58
  • Mysql事务特性和级别原理解析

    2024-01-25 11:00:04
  • 使用tensorflow实现矩阵分解方式

    2022-04-17 17:01:17
  • 解决pycharm无法调用pip安装的包问题

    2023-01-25 23:43:16
  • 解决Python发送Http请求时,中文乱码的问题

    2021-02-02 05:11:39
  • python的urllib模块显示下载进度示例

    2023-06-13 17:06:31
  • 一个完整的PHP类包含的七种语法说明

    2023-11-16 13:02:07
  • 如何利用Python开发一个简单的猜数字游戏

    2022-05-21 20:38:08
  • asp之家 网络编程 m.aspxhome.com