Frage

Ich versuche, eine alte JavaScript-Funktion zur Aktualisierung Unterstützung für AJAX erkennen (das heißt das XMLHttpRequest-Objekt). Ich habe Online sehe (einschließlich SO) und fand verschiedene Lösungen, aber ich bin nicht sicher, welche die effizienteste ist die Unterstützung für einfach zu erkennen.

Die aktuelle Funktion ist:

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

In Firefox 3, die oben gibt Fehler, weil MS nicht definiert ist.

Ich weiß, dass eine Bibliothek besser wäre, aber das ist keine Option für die kurzfristig. Wir unterstützen nur IE6 und über + neuere Versionen von Firefox, Safari / WebKit und Opera.

Was ist der beste Weg, um ein wahr / falsch für XmlHttpRequest Unterstützung zu bekommen?

War es hilfreich?

Lösung 3

Ich habe mit dieser kommen:

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

Es scheint so zu arbeiten, dachte ich, es würde teilen.

Andere Tipps

Bloß nicht!

Oder besser gesagt, verschwendet keine Zeit zu tun, was viele andere Menschen besser gemacht haben.

Versuchen Sie, die Quelle von jQuery, etc. zu jagen und „borgen“ ihre Methoden greifen; sie haben bereits investierten die Zeit so viele Browser wie möglich zu unterstützen (vor allem in jQuery Fall), so Sie sich die Zeit speichern.

HTH

Mein bevorzugter Code hierfür lautet:

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

Sie können ganz einfach Tests für Varianten von Microsoft Objekte hinzufügen ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top