2009-08-08 7 views
8

Esiste un modo per verificare all'interno di JavaScript se l'oggetto XMLHttpRequest supporta W3C Progress Events? Intendo qui se impostando le proprietà onload, onprogress, onabort, onerror, ecc. Su una funzione di gestione, queste funzioni verranno chiamate tali eventi, come descritto.Come controllare JavaScript se l'oggetto XMLHttpRequest supporta gli eventi di avanzamento W3C?

Domanda aggiuntiva (bonus): esiste un modo per aumentare XMLHttpRequest (ad esempio utilizzando alcuni timer) per supportare tali eventi?

Sidenote: Ho trovato prima su W3C Progress eventi nel contesto di XMLHttpRequest here

risposta

9

Hai provato a farlo in questo modo?

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 
} 

Ho provato questo in Firefox & IE8. Firefox mostra che lo supporta. IE dice che non ha supporto per gli eventi di progresso del W3C.

+0

Alternativa a 'if (xhr.onload! == undefined) {...}' deve usare 'if ('onload' in xhr) {...}' –

+1

è meglio testare 'onprogress' in xhr, perché alcuni browser (Opera) implementano onload/onerror, ma non onprogress, sebbene Opera non attivi firme suprogress, ma può essere emulato con: setInterval ({if (xhr.readyState === 3 && xhr.responseText! = = last) xhr.onprogress();}, 250); – 4esn0k

+0

@ 4esn0k Ho aggiornato la mia risposta. Non ero a conoscenza del fatto che Opera avesse un'implementazione diversa. Grazie. –

Problemi correlati