2011-05-17 3 views
2

Je pense que ce code devrait jouer un son, puis afficher une boîte d'alerte. Il fonctionne avec IE9, mais avec Chrome & Firefox, le son est joué, mais le rappel n'est jamais appelé - donc pas de boîte d'alerte. Je suis un programmeur C#, C++, nouveau en javascript, et je pourrais utiliser de l'aide! Merci.callback javascript fonctionne avec IE, mais pas Chrome ou Firefox

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <script type="text/javascript"> 
     var playAll= function(){ 
      var audio = document.getElementById('s'); 

      var callback = function(e){ 
       alert("ended"); 
      }; 

      audio.onended = callback; 
      audio.play(); 
     } 

    </script> 
</head> 

<body> 
    <input name="Button1" type="button" value="Play" onclick="playAll()"/> 

    <audio ID="s"> 
    <source src="s.mp3" > 
    <source src="s.ogg" > 
</body> 

</html> 
+0

où est? – wong2

Répondre

4

Juste pour être sûr que ce n'est pas une question de HTML invalide, utilisez la version suivante valide

<audio ID="s"> 
    <source src="s.mp3" /> 
    <source src="s.ogg" /> 
</audio> 

puis utiliser la bonne façon de lier les événements.

audio.addEventListener("ended", callback, false); 
+0

merci, c'était tout. – jack

3

onended semble être spécifique à IE9, Chrome et Firefox se déclenche l'événement ended, que vous pouvez lier une fonction comme ceci: v.addEventListener("ended", function() { alert("ended"); }

Rappelez-vous que la spécification HTML5 est encore en cours d'élaboration, et tous les navigateurs ne l'implémentent pas de la même manière.

Il y a une question similaire ici: HTML 5 Video OnEnded Event not Firing

+0

Merci! Ce code fonctionne avec IE et Chrome, mais pour le faire fonctionner avec Firefox, j'ai dû ajouter le paramètre 'false': audio.addEventListener ("terminé", function (e) {alert ("terminé");}, false) – jack

Questions connexes