我们写的Ajax代码在IE7.0之前的版本运行是没有问题的,但是在IE7.0上运行就有问题了,原因是微软在其IE 7中把XMLHttpRequest实现为一个窗口对象属性,而以前的版本作为一个ActiveX对象形式引入了XMLHttpRequest对象.
归根结底就是在获得XMLHttpRequest对象的方式上变化了
解决问题最简单的办法就是:
.点击“工具”->“Internet选项”->“高级”,在“安全”节点下找到“启用本机XMLHTTP支持”,该选项默认是钩选,禁用它后可以解决问题。
也可以通过JavaScript代码解决代码如下:
if(window.ActiveXObject){
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.ActiveXObject){
req = new ActiveXObject("Msxml2.XMLHTTP.4.0");
}
else if(window.ActiveXObject){
req = new ActiveXObject("Msxml2.XMLHTTP");
}
else if(window.XMLHttpRequest){
req = new XMLHttpRequest();
}
那么我想问的是:上述JavaScript是怎么执行的?为什么前面三个语句里都是“window.ActiveXObject”?
if(
window.ActiveXObject){
req = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(
window.ActiveXObject){
req = new ActiveXObject("Msxml2.XMLHTTP.4.0");
}
else if(
window.ActiveXObject){
req = new ActiveXObject("Msxml2.XMLHTTP");
}
else if(window.XMLHttpRequest){
req = new XMLHttpRequest();
}
按常理应该要么执行第一个,要么全不执行的呀~
我是一个JavaScript盲,请高手赐教~