2011-08-07 69 views
9

readystatechange là một sự kiện chuẩn cho XMLHttpRequest đối tượng, và do đó sẽ có thể có chức năng nghe về sự kiện này hoặc sử dụngreadystatechange sử dụng addEventListener so với thuộc tính kiểu cũ?

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

cũng như

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

Tuy nhiên, phương pháp thứ hai dường như chỉ làm việc trong Firefox và Chrome, nhưng không phải Opera, mà không ném một lỗi nhưng chỉ đơn giản là không có hiệu lực. Tại sao điều này lại là hành vi đúng đắn này?

+1

Nó ít nhất được xác định trong thông số W3C: http://www.w3.org/TR/XMLHttpRequest/#event-handler-attributes –

Trả lời

8

MDN docs on XMLHttpRequest không đề cập cụ thể đến việc tăng sự kiện readystatechange, nhưng yêu cầu W3C docs.

Kết hợp với quy tắc chung "onxxx là trình xử lý sự kiện cho sự kiện xxx" sẽ ngụ ý rằng hành vi Opera không chính xác.

0

Điều này phù hợp với tôi.

xhr.addEventListener('readystatechange', evt => { 
    if (this.readyState == 4 && this.status == 200) { 
     console.log(this.responseText); 
     return this.responseText; 
    } 
}, false); 
Các vấn đề liên quan