jQuery实现Ajax在IE运行依赖ActiveX控件
...
jQuery实现Ajax时,在IE6中运行时创建XMLHttpRequest对象时是使用ActiveX方法,jQuery1.3.2创建XMLHttpRequest对象的代码片断如下:
xhr:function(){
return window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
},
如上面代码所示,IE中通过new ActiveXObject("Microsoft.XMLHTTP")创建XMLHttpRequest对象,而XMLHttpRequest是实现Ajax的核心对象。假如我在IE中禁用ActiveX控件,会导致创建XMLHttpRequest对象失败,结果运行出现错误,造成很多麻烦。
先不讨论复杂的Ajax应用,就jQuery的弹出层插件Thickbox和Facebox当在弹出层打开一个网页链接时,要取得链接指向页面的内容,也要用到简单Ajax功能,在Thickbox中用load方法,而Facebox中使用$.get方法来获得远程页面内容。
假如访客的IE中禁用ActiveX控件,那么实现友好的用户体验就不可能,当然不能弹出层,但会直接转入到链接页面。
虽然IE7的实现方式已经改变,但IE6还是要考虑的浏览器版本之一,不过搜索过不少资料,好像在IE6中除了ActiveX控件方式,没有其他方式可以创建XMLHttpRequest对象了,最理想的状态是都能用new XMLHttpRequest()方式创建对象。
浏览器兼容编程和设计造成了社会财富的大量损失,宝贵时间都花费在了这无意义的事情上,如果早统一,或者微软不要自以为是,今天就不会出现这种情况了。
发表评论
最新评论
- 暂时没有评论!
