if语句中的return语句

时间:2015-06-24 17:26:50

标签: xmlhttprequest activexobject

我在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;
}

1 个答案:

答案 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");
}