Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 这些ActiveXObject和XMLHttpRequest检查是否适用于IE6以外的浏览器?_Javascript_Ajax_Xmlhttprequest_Internet Explorer 6 - Fatal编程技术网

Javascript 这些ActiveXObject和XMLHttpRequest检查是否适用于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

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