0

AJAX (つまり、XmlHttpRequest オブジェクト) のサポートを検出するために使用される古い JavaScript 関数を更新しようとしています。オンライン (SO を含む) を調べて、さまざまな解決策を見つけましたが、単純にサポートを検出するのにどれが最も効率的かわかりません。

現在の機能は次のとおりです。

    function IsSyncAJAXSupported()
    {
        var isSyncAJAXSupported = true;

        var xmlHttp = null;
        var clsids = ["Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
        for(var i=0; i<clsids.length && xmlHttp == null; i++) {
            try {
                    xmlHttp = new ActiveXObject(clsids[i]);
            } catch(e){}
        }

        if(xmlHttp == null && MS.Browser.isIE)
        {
            isSyncAJAXSupported = false;
        }
        return isSyncAJAXSupported;
    }

Firefox 3 では、MS が定義されていないため、上記でエラーが発生します。

ライブラリを使用する方が良いことはわかっていますが、それは短期的な選択肢ではありません。サポートされているのは、IE6 以降 + 最近のバージョンの Firefox、Safari/WebKit、および Opera のみです。

XmlHttpRequest サポートの true/false を取得する最良の方法は何ですか?

4

3 に答える 3

1

しないでください!

むしろ、他の多くの人がうまくやったことに時間を無駄にしないでください。

jQuery などのソースを入手して、それらのメソッドを「借用」してみてください。できるだけ多くのブラウザーをサポートするために既に時間を費やしているため (特に jQuery の場合はそうです)、時間を節約してください。

HTH

于 2008-11-20T16:29:05.690 に答える
1

これに対する私の好みのコードは次のとおりです。

function CreateXMLHttpRequest()
{
  // Firefox and others
  try { return new XMLHttpRequest(); } catch (e) {}
  // Internet Explorer
  try { return new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
  try { return new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
  //alert("XMLHttpRequest not supported");
  // No luck!
  return null;
}

Microsoft オブジェクトのバリアントのテストを簡単に追加できます...

于 2008-11-20T16:30:47.357 に答える
0

私はこれを思いついた:

var xhr = null;
try { xhr = new XMLHttpRequest(); } catch (e) {}
try { xhr = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
try { xhr = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
return (xhr!=null);

うまくいくようですので、シェアしたいと思いました。

于 2008-11-20T17:09:21.367 に答える