11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Je souhaite jouer un son en javascript sur mon site d'apprentissage du chinois.

Sur internet j'ai trouvé plusieurs méthodes mais aucune ne m'a paru parfaitement satisfaisante.

En m'inspirant de cette page qui parle de HTML dynamique, j'ai finalement opté pour celle qui consiste à créer un objet <embed> en utilisant

var spanElement = document.getElementById("aSpanElement");
spanElement.innerHTML = "<embed src=... />"


Je trouve ça moche, je n'ai pas réussi à créer l'élément "embed" directement en utilsant document.create("embed") (ou plutôt ça ne marchait pas) et je ne contrôle pas très bien les quel plugin va lire mon fichier et comment faire que ce soit un comportement déterministe.

Avez-vous des idées pour me permettre de rendre ça plus standard et plus propre ?

Pour info mes contraintes sont les suivantes :
- mes fichiers sont en .ogg, .wav et .mp3 (au choix)
- le nom des fichiers est déterminé lors de l'exécution du javascript et n'est pas connu à l'avance
- le fichier n'existe pas forcément (une HTTPRequest de HEADER me permet de résoudre ce point proprement).

Merci d'avance !

Maxime
Modifié par figo (12 Nov 2007 - 11:41)
On ne peut pas vraiment dire qu'on "joue un son en javascript" car javascript ne lit pas les sons... mais plutot un plugin dependant de la plate forme sur laquelle est executée le navigateur.

Le plus simple est d'utilisé "dewplayer", un petit flash qui lit les mp3. Le flash étant a mon avis la solution la plus "cross-browser" pour lire un son.
Merci !

Je cherchais à éviter d'utiliser le flash puisque j'avais pu m'en passer jusqu'ici mais il semblerait que pour les sons il n'y ait pas vraiment de meilleure alternative du point de vue de la compatibilité.

Je vais donc me pencher sur dewplayer que j'avais effectivement croisé au cours de mes recherches.


Maxime, toujours impressionné par la réactivité de ces forums !
En fait je ne vois pas bien comment dewplayer répond simplement à mon problème car :

- je veux pouvoir modifier le fichier joué dans le player directement en js sans recréer un objet ;
- je ne tiens pas à afficher un player (aussi joli soit-il) vu que mes fichiers durent en moyenne une demi-seconde, un bouton suffit ;
- j'ai encore l'epoir de me passer de js.

Enfin la principale raison de mon retour ici est que je n'arrive tout simplement pas à mes fins avec dewplayer, voici ce que j'ai fait et qui ne fonctionne pas :


<script type="text/javascript">
  function playSound(sound) {
    document.getElmeentById("player").data = "dewplayer.swf?son=" + sound;
    document.getElementById("playerParam").value = "dewplayer.swf?son=" + sound;
  }
</script>
<object id="player" data="dewplayer.swf" type="application/x-shockwave-flash">
 <param name="movie" value="dewplayer.swf" id="playerParam" />
</object> 
<input type="textbox" id="box" />
<input type="button" onclick="playSound(document.getElementById('box').value);" value="jouer" />


J'obtiens des erreurs qui traduisent clairement que je ne sais pas très bien ce que je fais ne maîtrisant pas ce dewplayer.

Des idées pour m'en sortir ?

Merci !!!
Modifié par figo (15 Nov 2007 - 20:53)