这个函数位于对象内部,用于定义 xmlhttprequest 对象的事件处理。由于某些浏览器不支持 addEventListener 方法,因此我进行了测试,如果不支持,则会定义 onstatechange:
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...");
}
}
“este”在函数外部是“this”的意思(var este = this;)
“reqSwitch”将指向正确的函数。问题是测试 este.Request.hasOwnProperty("onload") 仅适用于 Safari。如何进行跨浏览器测试以检测浏览器是否支持 addEventListener?
if(este.Request.onload!==undefined)
。 - dandavis