Javascript 这些ActiveXObject和XMLHttpRequest检查是否适用于IE6以外的浏览器?
我在IE10 for plUpload插件中遇到了一个奇怪的错误,我发现如果在我们的项目中删除这段代码,一切都会正常工作。有人能告诉我这到底是干什么用的吗?如果可以安全移除的话?看起来它只适用于IE6?我说得对吗Javascript 这些ActiveXObject和XMLHttpRequest检查是否适用于IE6以外的浏览器?,javascript,ajax,xmlhttprequest,internet-explorer-6,Javascript,Ajax,Xmlhttprequest,Internet Explorer 6,我在IE10 for plUpload插件中遇到了一个奇怪的错误,我发现如果在我们的项目中删除这段代码,一切都会正常工作。有人能告诉我这到底是干什么用的吗?如果可以安全移除的话?看起来它只适用于IE6?我说得对吗 var progids = ["Msxml2.XMLHTTP.6.0", "Msxml2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]; var progid = null; if (typeof ActiveXObjec
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;
};
}
var progids=[“Msxml2.XMLHTTP.6.0”、“Msxml2.XMLHTTP.3.0”、“Msxml2.XMLHTTP”、“Microsoft.XMLHTTP”];
var progid=null;
if(ActiveXObject的类型!=“未定义”){
var ie7xmlhttp=false;
if(XMLHttpRequest的类型==“对象”){
试一试{
var o=新的XMLHttpRequest();
ie7xmlhttp=true;
}捕获(e){
}
}
if(typeof XMLHttpRequest==“未定义”| |!ie7xmlhttp){
XMLHttpRequest=函数(){
var xmlHttp=null;
if(!BlocAjax.noActiveX){
if(progid!=null){
返回新的ActiveXObject(progid);
}
对于(var i=0;i是的,我相信还有其他浏览器。您显示的检查试图通过查找支持ActiveX(IE*),但不支持XMLHttpRequest(IE6-)的浏览器来检测IE。但是,如果ie7xmlhttp标志可能初始化为null或未定义,则任何不支持XMLHttpRequest的非IE浏览器都将受到类似的处理,因为if(typeof XMLHttpRequest==“undefined”| |!ie7xmlhttp){
在这些情况下将为真
因此,几乎任何不支持XMLHttpRequest的旧浏览器都会落入尝试填充XMLHttpRequest API的if
块。这并不是说有很多人在使用它们,但我确信它们确实存在。(例如,FF、Opera、Safari的旧版本尤其如此……可能是鲜为人知的移动浏览器……诸如此类。)
顺便说一句,建议将此代码片段用于x-platform XMLHttpRequest构造,我建议:
function getXMLHttpRequest()
{
if (window.XMLHttpRequest) {
return new window.XMLHttpRequest;
}
else {
try {
return new ActiveXObject("MSXML2.XMLHTTP.3.0");
}
catch(ex) {
return null;
}
}
}