Ajax
对于动态网络应用,尤其是后台数据支撑等应用有着十分独到的好处,像Google Map, Virtual Earth等。页面当中会反复用到XMLHttpRequest(XHR)对象,这时对象重用就非常重要,否则反复new,不仅费时还耗资源。
对象重用也不麻烦,只需要加个对象状态判断即可,但这里需要注意的是IE下有点特别。请看下面代码:
req.onreadystatechange = processReqChange;
req.open("GET", url, true); req.send("");
这段代码在firefox下反复使用是没有问题的,在IE下则出现问题:第一次使用正常,但第二次则无法成功返回。
原因:IE会在open方法里面重置XHR对象,因此processReqChange则不能被激发。
修改成如下形式:
req.open("GET", url, true);
req.onreadystatechange = processReqChange; req.send("");
则一切正常,XHR对象可以正常重用。
可见,XHR对象的重用为了做到跨浏览器,需要将open方法置于设置onreadystatechange方法之前。
关于对象重用的问题还可以参考:
http://keelypavan.blogspot.com/2006/03/reusing-xmlhttprequest-object-in-ie.html