2009-08-08 13 views
8

¿Hay alguna manera de verificar dentro de JavaScript si el objeto XMLHttpRequest admite W3C Progress Events? Quiero decir que si las propiedades onload, onprogress, onabort, onerror, etc. en alguna función del manejador tendrían esa función llamada esos eventos, como se describe.¿Cómo comprobar en JavaScript si el objeto XMLHttpRequest es compatible con eventos de progreso W3C?

Pregunta adicional (adicional): ¿hay alguna forma de aumentar XMLHttpRequest (por ejemplo, utilizando algunos temporizadores) para admitir esos eventos?

Nota al margen: He encontrado en primer lugar sobre el W3C Progreso Eventos en el contexto de XMLHttpRequest here

Respuesta

9

¿Ha intentado hacerlo de esta manera?

try { 
    var xhr = new XMLHttpRequest(); 

    if ('onprogress' in xhr) { 
     // Browser supports W3C Progress Events 
    } else { 
     // Browser does not support W3C Progress Events 
    } 
} catch (e) { 
    // Browser is IE6 or 7 
} 

He probado esto en Firefox & IE8. Firefox muestra que lo admite. IE dice que no tiene soporte para eventos de Progreso W3C.

+0

Alternativa a 'if (xhr.onload! == undefined) {...}' es para usar 'if ('onload' in xhr) {...}' –

+1

es mejor probar para 'onprogress' en xhr, porque algunos navegadores (Opera) implementa onload/onerror, pero no en progreso, aunque Opera no dispara en el progreso, pero se puede emular con: setInterval ({if (xhr.readyState === 3 && xhr.responseText! = = último) xhr.onprogress();}, 250); – 4esn0k

+0

@ 4esn0k He actualizado mi respuesta. No sabía que Opera tenía una implementación diferente. Gracias. –

Cuestiones relacionadas