2011-08-07 8 views
9

readystatechange è un evento standard per XMLHttpRequest oggetti, e quindi dovrebbe essere in grado di avere funzioni ascoltare sull'evento sia utilizzandoreadystatechange utilizzando addEventListener rispetto alla proprietà vecchio stile?

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

nonché

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

Tuttavia, quest'ultimo metodo sembra solo funziona in Firefox e Chrome, ma non in Opera, che non genera un errore ma semplicemente non ha alcun effetto. Perché questo è ed è anche un comportamento corretto?

+1

È almeno definito nelle specifiche W3C: http://www.w3.org/TR/XMLHttpRequest/#event-handler-attributes –

risposta

8

Il MDN docs on XMLHttpRequest non menziona specificamente l'aumento di un evento readystatechange, ma lo richiede lo W3C docs.

Questo combinato con la regola generale "onxxx è il gestore di eventi per l'evento xxx" implicherebbe che il comportamento di Opera non sia corretto.

0

Questo ha funzionato per me.

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