2011-08-07 9 views
9

readystatechange jest standardowym wydarzeniem dla XMLHttpRequest obiektów, a więc powinien być w stanie mieć funkcje nasłuchiwać zdarzenia albo za pomocąreadystatechange przy użyciu metody addEventListener versus właściwości starego stylu?

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

jak

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

Jednak ta ostatnia metoda wydaje się tylko do działa w Firefoksie i Chrome, ale nie w Operze, która nie wyświetla błędu, ale po prostu nie działa. Dlaczego tak jest i czy to jest nawet prawidłowe zachowanie?

+1

jest co najmniej określone w specyfikacji W3C: http://www.w3.org/TR/XMLHttpRequest/#event-handler-attributes –

Odpowiedz

8

W przypadku MDN docs on XMLHttpRequest nie wspomniano o podniesieniu zdarzenia readystatechange, ale wymaga tego W3C docs.

To w połączeniu z ogólną zasadą "onxxx jest procedurą obsługi zdarzeń dla zdarzenia xxx" oznacza, że ​​zachowanie Opery jest niepoprawne.

0

To zadziałało dla mnie.

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