2011-08-07 10 views
9

readystatechange es un evento estándar para XMLHttpRequest objetos, y así debería ser capaz de tener funciones escuchan en el evento, ya sea usandoreadystatechange using addEventListener versus propiedad de estilo antiguo?

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

, así como

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

Sin embargo, este último método sólo parece funciona en Firefox y Chrome, pero no en Opera, que no arroja un error, simplemente no tiene ningún efecto. ¿Por qué es esto? ¿Es esto un comportamiento correcto?

+1

Se define al menos en la especificación W3C: http://www.w3.org/TR/XMLHttpRequest/#event-handler-attributes –

Respuesta

8

El MDN docs on XMLHttpRequest no mencionan específicamente la crianza de un evento readystatechange, pero el W3C docs lo requieren.

Eso combinado con la regla general "onxxx es el controlador de eventos para el evento xxx" implicaría que el comportamiento de Opera es incorrecto.

0

Esto funcionó para mí.

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