2010-12-07 32 views
5

Je voudrais être capable de piéger un navigateur événement qui me dit quand une ressource de fichier WAV a terminé avec succès fini de charger dans le cache du navigateur.Y at-il un moyen de piéger l'achèvement d'un événement de chargement de fichier son?

Avec un tel événement, je peux mettre du texte sur la page pendant le téléchargement du fichier demandant à l'utilisateur d'être patient pour son arrivée. Ils s'attendent, après tout, à entendre le fichier immédiatement, mais cela n'arrivera que si le fichier est déjà dans le cache (à partir des visites de pages précédentes). Après l'événement, je peux mettre en place un message que la musique est prête à jouer, etc

Dans IE on utilise BGSOUND, qui est un élément propriétaire inventé par Microsoft, et il ne déclenche pas d'événements (vous pourriez vous attendre "onload" pour en être un, mais ce n'est pas le cas). Des objets audio en Javascript peuvent être créés, mais ... il ne semble pas y avoir de moyen de piéger l'événement du navigateur qui vous indique quand un fichier son (par exemple un fichier WAV) a fini de charger.

Je voudrais divertir n'importe quelle solution, surtout si elle implique Javascript. Notez que l'événement de charge de page "évident" n'est pas adéquat car il ne se produit pas au niveau granulaire dont j'ai besoin. Notez également que je charge et lit avec succès des fichiers musicaux dans IE et Firefox avec mon code Javascript actuel, mais que je souhaite vraiment améliorer l'expérience de mon utilisateur avec des messages qui demandent leur patience pendant qu'ils attendent de charger de gros fichiers musicaux .

Répondre

1

Si vous êtes libre d'incorporer SoundManager2, chaque clip audio a un événement onload et une propriété readyState. Il a également un événement whileloading qui se déclenche périodiquement pendant le chargement des données. Notez toutefois que votre base d'utilisateurs aura besoin d'un plugin Flash (ou d'un navigateur prenant en charge l'audio HTML5, si vous avez activé ce paramètre), et pour une prise en charge complète de la plate-forme, les sons doivent être en MP3/MP4 format.

Si ces contraintes sont acceptables, alors SM2 est ce que vous voulez.

1

Malheureusement, ce ne fonctionnera pas avec un fichier WAV: Il suffit d'utiliser l'API de la balise audio HTML5, comme ceci;

var audioElement = document.createElement('audio'); 
audioElement.setAttribute('src', 'backgroundsound.ogg'); 
audioElement.load() 
audioElement.addEventListener("load", function() { 
    alert('Loading done!') 
    audioElement.play(); 
}, true); 

Je pense que le fichier audio ne peut être ogg (Vorbis) ou mp3.