我在 IE10 中的 plUpload 插件中遇到了一个奇怪的错误,我发现如果我在项目中删除此代码,一切都会正常。谁能确切地告诉我这有什么作用以及是否可以安全删除?貌似只适用于IE6?我说得对吗?
var progids = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
var progid = null;
if (typeof ActiveXObject != "undefined") {
var ie7xmlhttp = false;
if(typeof XMLHttpRequest == "object") {
try {
var o = new XMLHttpRequest();
ie7xmlhttp = true;
} catch (e) {
}
}
if(typeof XMLHttpRequest == "undefined" || !ie7xmlhttp) {
XMLHttpRequest = function() {
var xmlHttp = null;
if(!BlocAjax.noActiveX) {
if(progid != null) {
return new ActiveXObject(progid);
}
for(var i=0; i<progids.length && xmlHttp == null; i++) {
try {
xmlHttp = new ActiveXObject(progids[i]);
progid = progids[i];
}catch(e){}
}
}
if(xmlHttp == null && MS.Browser.isIE) {
return new .IFrameXmlHttp();
}
return xmlHttp;
};
}
}
最佳答案
是的,我相信还有其他浏览器。您显示的检查尝试通过查找支持 ActiveX (IE*) 但不支持 XMLHttpRequest (IE6-) 的浏览器来检测 IE。但是,如果 ie7xmlhttp 标志可能被初始化为 null 或未定义,则任何不支持 XMLHttpRequest 的非 IE 浏览器都会受到类似的处理,因为 if(typeof XMLHttpRequest == "undefined"|| !ie7xmlhttp) {
在这些情况下为 true。
因此,几乎任何不支持 XMLHttpRequest 的旧版浏览器都会落入尝试填充 XMLHttpRequest API 的 if
block 中。并不是说有很多人在使用它们,但我确信它们就在那里。 (例如,特别是旧版本的 FF、Opera、Safari……可能是不太知名的移动浏览器……之类的事情。)
顺便说一句,Microsoft's XMLHttpRequest documentation推荐使用以下代码片段进行 x 平台 XMLHttpRequest 构建,我推荐:
function getXMLHttpRequest()
{
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
}
else {
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
catch(ex) {
return null;
}
}
}
关于javascript - 这些 ActiveXObject 和 XMLHttpRequest 检查是否适用于 IE6 以外的任何其他浏览器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14462286/