昨天写了篇AJAX的七宗罪,有人专门给我发了mail,也有人专门写了文章指出我所说观点的弊端。今天无力也没必要再一一加以论证了,我就单独以WEB UI的眼光来看看AJAX。
AJAX有三大特点:异步交互(Asynchronous),基于JavaScript 脚本,和XML封装数据。这三点包括了AJAX运行的全部特征,从客户端用javascript开始request数据后传到server,server用xml做接口用异步方式response数据,javascript在通过parseXML后最终进行UI处理。整齐干净利落的流水线工作,看起来毫无瑕疵,但是大家都忽略了其中的一个关键就是javascript。以下我一一罗列什么样的用户在访问AJAX时会碰到问题:
- 1、早期的浏览器,如IE4
- 2、关闭了浏览器的javascript脚本或者IE下完全禁用ActiveX
- 3、使用了企业级的防火墙、一些安全防护软件和IE里安全级别设置较高
- 4、一些非主流或者冷僻的浏览器,如盲人浏览器、手机浏览器
- 5、在IE或者FireFox里用了第三方浏览器插件或者使用了广告拦截
- 6、搜索引擎的爬行蜘蛛,一些基于http方式的软件,如离线浏览
- 7、一些浏览器安全软件(插件)的正常监控
列表中1、4估计情况还好点,起码部分的javascript能正常运行,这就给了UI设计者喘息之气,起码可以从页面底部显示一个本站推荐1024*768的分辨率下访问类似的提示信息或者跳转页面(跳转到无AJAX的页面——两手准备)的机会,但是像2、3、5情况,javascript根本不能运行就谈不上分析是不是支持AJAX了。我的Maxthon默认打开了软件本身的所有广告拦截设置,并且在每打开一个页面时运行一个叫做“清除烦恼”的第三方插件,这两个强强联手让我访问一些AJAX高级应用的web时普遍都出错。
还有一个我认为是很不爽的就是在AJAX下推崇的是无刷新,号称是大大提高了人机交互,在我看来恰得其反。http://www.standards-schmandards.com/exhibits/ajax/是一个纯AJAX制作的计算器的sample,输入数字后点击ADD,页面不用刷新酷酷的通过server端计算数据并传回结果。这个计算器曾经是大家相互link和学习的好例子,现在却成了基于AJAX下WEB UI的一个疑问。那就是点击ADD后用户不知道什么时候数据是更新了,也许你们也和我一样,输入6+3后然后开始等待,当value变成9的时候就知道运算结束了。晕,既然我知道结果是9那我算它干什么啊。当然,在屏幕上显示一个像"Loading"或者"正在计算中,请稍候..."这样的提示是个好主意,但是这同样需要用户去用眼睛盯着看结果的变化,而且并不知道数据的运算或者数据的传输进行到怎样一个情况,普通的submit表单起码还能看见一个进度条显示页面下载情况。还要注意的是这只是一个计算器,如果屏幕上有很多个计算器在进行同时的异步运算,不管是显示N个"Loading",还是其他的方式的提示都是不尽人意的UI设计。
我还是坚持我的观点,AJAX在目前的web下最适合的就是企业级应用,大家在开发B/S系统时经常碰到的二三级联动或者树型目录的节点加载,用AJAX来实现简直太easy和完美了。而且在企业级应用不会出现以上所说的javascript问题,开发商完全有理由毫不犹豫地要求客户:我们的系统应用了最新最酷的web技术,所以要求系统用户的浏览器必须是IE6……