2015-06-24 2 views
2

Я испытываю странное поведение в IE10. Мне нужно было использовать ActiveXObject для получения локальных файлов (через протокол file: //).Оператор возврата в выражении if

Почему эта работа в 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

Поскольку все современные браузеры (IE7 +, Firefox, Chrome, Safari и Opera) имеют встроенный -in 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"); 
} 
Смежные вопросы