2

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

}

4

1 に答える 1

3

はい、他のブラウザもあると思います。表示されるチェックは、ActiveXサポート(IE *)を備えているが、XMLHttpRequestサポート(IE6-)を備えていないブラウザーを探すことによってIEを検出しようとしています。ただし、ie7xmlhttpフラグがおそらくnullまたは未定義に初期化されている場合、XMLHttpRequestをサポートしていない非IEブラウザーはif(typeof XMLHttpRequest == "undefined" || !ie7xmlhttp) {、そのような場合に当てはまるため、同様に扱われます。

したがって、XMLHttpRequestをサポートしていないほとんどすべてifの古いブラウザーは、XMLHttpRequestAPIをシムしようとするブロックに分類されます。たくさんの人が使っているわけではありませんが、きっとそこにいると思います。(たとえば、FF、Opera、Safariの特に古いバージョン...あまり知られていないモバイルブラウザかもしれません...そのようなものです。)

ところで、MicrosoftのXMLHttpRequestドキュメントでは、xプラットフォームのXMLHttpRequest構築にこのコードスニペットを推奨しています。

function getXMLHttpRequest() 
{
    if (window.XMLHttpRequest) {
        return new window.XMLHttpRequest;
    }
    else {
        try {
            return new ActiveXObject("MSXML2.XMLHTTP.3.0");
        }
        catch(ex) {
            return null;
        }
    }
}
于 2013-01-22T19:37:28.960 に答える