我在IE10中遇到了一些奇怪的行为。我需要使用ActiveXObject在本地获取一些文件(通过file://协议)。
为什么这在IE10中有效:
function createXhr() {
return new window.ActiveXObject( "Microsoft.XMLHTTP" );
}
但不是这样:
function createXhr() {
inMpage = true;
if (inMpage == false) {
var a = new window.XMLHttpRequest();
} else {
var a = new window.ActiveXObject( "Microsoft.XMLHTTP" );
}
return a;
}
答案 0 :(得分:0)
因为所有现代浏览器( IE7 + ,Firefox,Chrome,Safari和Opera)都有内置的XMLHttpRequest
对象。
var a = new window.XMLHttpRequest(); // use this for IE10
并且您的代码正在执行else
案例,该案例与旧版本的Internet Explorer(IE5和IE6)兼容,而不是 IE10 。
var a = new window.ActiveXObject( "Microsoft.XMLHTTP" );
要处理所有现代浏览器,包括IE5和IE6,请检查浏览器是否支持XMLHttpRequest
对象。如果是,请创建XMLHttpRequest
对象,否则创建ActiveXObject
:
var xmlhttp;
if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}