Diese Funktion in einem Objekt definiert die Ereignisbehandlung für ein xmlhttprequest-Objekt. Da einige Browser die addEventListener Methode nicht akzeptieren, habe ich einen Test so wenn nicht, definieren sie OnStateChange:Wie erkennt man, ob der Browser xmlhttprequest Ereignisse von addEventListener akzeptiert?
var reqEngatilhar = function(){
este.concluido = false;
timeoutId = setTimeout(reqTimeout, este.timeout);
if(este.Request.hasOwnProperty("onload")){
este.Request.addEventListener("error", reqErro, true);
este.Request.addEventListener("progress", reqMon, false);
este.Request.addEventListener("abort", reqAbort, false);
este.Request.addEventListener("load", reqFim, false);
console.log("$Http reqEngatilhar usando eventos...");
} else {
este.Request.onreadystatechange = function (e) { reqSwitch(e); };
console.log("$Http reqEngatilhar usando onreadystatechange...");
}
}
Die "este" ist "das" außerhalb der Funktion (var este = this;)
Der "reqSwitch" zeigt auf die richtige Funktion. Das Problem ist der Test este.Request.hasOwnProperty ("onload") funktioniert nur in Safari. Wie kann ich einen browserübergreifenden Test durchführen, um festzustellen, ob der Browser mit addEventListener funktioniert? https://github.com/jonathantneal/EventListener
Sparen Sie sich die Mühe der Browser-Kompatibilität überprüft und lassen Sie die polyfill damit umgehen
:
kill den hasOWnProperty-Teil, diese Methoden werden vererbt: 'if (este.Request.onload! == undefined)' – dandavis