6

両方のオブジェクト呼び出しが ActiveXObject を参照していることを願っています。しかし、なぜ IE で機能するために 2 つの異なるパラメーターを渡す必要があるのでしょうか。1. Msxml2.XMLHTTP および 2. Microsoft.XMLHTTP

両方とも同じですか?または、ブラウザに依存していますか (IE7 および IE8) ?

私は両方を使用しました。例外はありませんでした。どちらも私には同じように見えます。IE8を使用しています。

4

2 に答える 2

9

どちらも実際には時代遅れです。Microsoft の由緒ある MSXML ActiveX オブジェクトにはさまざまなバージョンがあります (最後のバージョンはバージョン 5.0 で、Office のいくつかのバージョンに付属していたと思います)。バージョンには、動作に小さな違いがあり、通常 AJAX シナリオでは機能しないバグ修正があります。 .

IE7 以降、Microsoft は、他の最新のブラウザーが採用していた標準化された "XmlHttpRequest" オブジェクトをサポートしました。http://msdn.microsoft.com/en-us/library/ms537505(VS.85).aspxを参照してください。IE7が事実上の最小公分母であるため、間違いなくそれを使用する必要があります。IE6 はほとんどの主要な組織によって廃止されたと宣言されているため、古い Microsoft 固有の ActiveX ProgID をサポートする理由はありません。

そしてもちろん、最近では独自の AJAX 呼び出しを展開する理由はほとんどありません。jQuery や ASP.NET Ajax などのライブラリがユーザーに代わって実行し、これらのあいまいなブラウザーの癖を抽象化するからです。これらのライブラリのいずれかを学習することを強くお勧めします。

ジョーダン・リーガー

于 2010-10-22T03:17:17.487 に答える
2

jquery (少なくとも 1.4.2) は $.ajax() の呼び出しに問題があります。それは大きなメモリリーク(噴水のような)悲劇のコードになります:

if ( window.ActiveXObject ) {
    jQuery.ajaxSettings.xhr = function() {
        if ( window.location.protocol !== "file:" ) {
            try {
                return new window.XMLHttpRequest();
            } catch(xhrError) {}
        }

        try {
            return new window.ActiveXObject("Microsoft.XMLHTTP");
        } catch(activeError) {}
    };
}

解像度:

if ( window.ActiveXObject ) {
    jQuery.ajaxSettings.xhr = function() {
        if ( window.location.protocol !== "file:" ) {
            if ( window.ActiveXObject ) {
                try {
                    return new window.ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
            try {
                return new window.XMLHttpRequest();
            } catch(xhrError) {}
        }

        try {
            return new window.ActiveXObject("Microsoft.XMLHTTP");
        } catch(activeError) {}
    };
}
于 2011-06-10T08:29:50.217 に答える