为attachEvent
,你需要"on"
前缀事件名称,例如
this.attachEvent("onload", onload);
这不同于将被省略的DOM事件addEventListener
,这就需要"on"
。
正如Marcel指出的那样,对于XMLHttpRequests,您需要绑定到onreadystatechange
,并检查处理程序内部的readyState
属性。 XMLHttpRequest
不支持onload
。
在另一方面,你应该避免检查浏览器和检查功能的支持来代替。 Internet Explorer 9的支持addEventListener
,例如:
var onreadystatechange = function() {
if (this.readyState == 4)
console.log("intercepting: " + this.status + " " + this.responseText);
};
if(!this.addEventListener && this.attachEvent){
console.log("it's IE<9...");
xhr.attachEvent("onreadystatechange", onreadystatechange);
}
else
// use addEventListener
在现实中,虽然,你不会一个XHR对象上使用attachEvent
或addEventListener
;我怀疑IE7和更低版本会玩这个,所以你只需直接绑定到事件属性:
xhr.onreadystatechange = function() {
if (this.readyState == 4)
console.log("intercepting: " + this.status + " " + this.responseText);
}
什么是'这个'? ;-) – 2011-04-20 10:01:01