2011-08-07 1 views
9

readystatechangeXMLHttpRequest 객체에 대한 표준 이벤트입니다, 그래서 기능은 이벤트들을 가질 수있을 것 중 하나 그러나 기존 스타일 속성 대 addEventListener를 사용하는 readystatechange?

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

뿐만 아니라

r.onreadystatechange = function() { ... }; 

를 사용하여, 후자의 방법은 같다 Firefox 및 Chrome에서 작동하지만 오페라는 작동하지 않지만 오류는 발생하지 않지만 단순히 효과가 없습니다. 이것이 왜, 그리고 이것은 심지어 올바른 행동입니까?

+1

적어도 W3C 사양에 정의되어 있습니다. http://www.w3.org/TR/XMLHttpRequest/#event-handler-attributes –

답변

8

MDN docs on XMLHttpRequest은 특별히 readystatechange 이벤트 발생을 언급하지 않지만 W3C docs 이벤트가 필요합니다.

일반적인 규칙 "onxxx은 이벤트 xxx의 이벤트 처리기입니다"와 결합하면 Opera의 동작이 잘못되었다는 것을 의미합니다.

0

이것은 나를 위해 일했습니다.

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