Comment Attraper NETWORK_NO_SOURCE Erreurs avec une Balise Vidéo HTML5

Si aucun des < source > balises prévues pour un HTML5 < video > tag sont jouables, je veux afficher un message d'erreur.

Selon cette page sur le Mozilla Developer Network, il semble que je dois vérifier la networkState propriété de l'élément vidéo pour voir si des sources chargés, chacun séparé de la source de la balise jette sa propre erreur lorsqu'il ne parvient pas à charger.

Pour détecter tous les éléments enfants n'ont pas réussi à charger, vérifier la valeur de l'élément média de networkState attribut. Si c'est HTMLMediaElement.NETWORK_NO_SOURCE, vous savez que toutes les sources d'échec du chargement.

Mais à quel point dois-je vérifier la networkState? Si je vérifie immédiatement sur l'appel de video_tag.load(), il me dit toujours la networkState est NETWORK_NO_SOURCE même si la source des éléments sont valides et que la vidéo joue bien. Donc, je suppose que je hvae attendre jusqu'à ce que les balises de la source ont été essayé par le navigateur.

Voici le test:

var state = this._video_tag.networkState;       
console.log( 'networkState', state );
if( state == this._video_tag.NETWORK_NO_SOURCE )
{
    throw new Error( 'No valid sources' );
}

J'ai essayé toutes de la vidéo à la suite de l'élément événements avec source invalide tags: loadstart, loadedmetadata, loadeddata se & erreur avec les résultats suivants (dans Firefox):

  • loadstart: appelés, mais networkState est NETWORK_LOADING
  • loadedmetadata: pas appelé
  • loadeddata se: pas appelé
  • erreur: pas appelé

Cependant, si j'découvrez la vidéo de la balise dans Firebug, la networkState est NETWORK_NO_SOURCE comme prévu.

Quel cas dois-je utiliser pour contrôler le moment de vérifier la balise vidéo, ou est-il une meilleure manière de faire ceci?

OriginalL'auteur voidstate | 2012-02-07