Questa funzione all'interno di un oggetto definisce la gestione degli eventi per un oggetto xmlhttprequest. Poiché alcuni browser non hanno accettato il metodo addEventListener, ho fatto un test e quindi non se, si definirà onstatechange:Come rilevare se il browser accetta eventi xmlhttprequest da addEventListener?
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...");
}
}
Il "este" è "questo" al di fuori della funzione (var este = questo;)
Il "reqSwitch" punterà alla funzione corretta. Il problema è il test este.Request.hasOwnProperty ("onload") funziona solo in Safari. Come posso eseguire un test cross-browser per rilevare se il browser funzionerà con addEventListener?
kill la parte hasOWnProperty, questi metodi sono ereditati: 'if (este.Request.onload! == undefined)' – dandavis