使用addEventListener与旧式属性的readystatechange?

时间:2011-08-07 06:56:20

标签: javascript xmlhttprequest

readystatechangeXMLHttpRequest个对象的标准事件,因此应该能够让函数使用

监听事件
r.onreadystatechange = function() { ... };

以及

r.addEventListener('readystatechange', function() { ... }, false);

然而,后一种方法似乎只适用于Firefox和Chrome,但不适用于Opera,它不会引发错误但只是没有效果。为什么会这样,这是否是正确的行为?

2 个答案:

答案 0 :(得分:11)

MDN docs on XMLHttpRequest没有具体提及提出readystatechange事件,但W3C docs确实需要它。

结合一般规则“onxxx是事件xxx的事件处理程序”意味着Opera行为不正确。

答案 1 :(得分:1)

这对我有用。

xhr.addEventListener('readystatechange', evt => {
    if (this.readyState == 4 && this.status == 200) {
        console.log(this.responseText);
        return this.responseText;
    }
}, false);