AJAX / XmlHttpRequestサポートを検出するためのベストプラクティス

StackOverflow https://stackoverflow.com/questions/305894

  •  08-07-2019
  •  | 
  •  

質問

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を取得する最良の方法は何ですか?

役に立ちましたか?

解決 3

これを思いつきました:

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

機能しているようですので、共有したいと思いました。

他のヒント

しないでください

というよりも、他の多くの人がより良くやったことをするのに時間を無駄にしないでください。

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

HTH

これに適したコードは次のとおりです。

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オブジェクトのバリアントのテストを簡単に追加できます...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top