"Comment émettre un 'bip' en Javascript,
comme le fait la fonction 'Beep()'
de VBScript ?"
Un
problème, une interrogation ? Adressez-vous à la rédaction
de JDNet Développeurs
Disons-le d'entrée de jeu : autant que l'on
puisse en juger, il n'existe pas de méthode permettant d'émettre
un "bip" système à partir de JavaScript.
Cela étant dit, il
existe d'autres manières d'émettre des sons à
partir d'évènements JavaScript, mais en utilisant
des technologies supplémentaires disponibles au sein du navigateur,
ou non.
L'une de ces possibilités consiste à faire appel à la balise
<embed>, qui le plus souvent utilisera le
plug-in QuickTime, mais. De là, on peut jouer du MIDI, des fichiers WAV,
ou d'autres formats basiques selon le système et le plug-in disponible.
Une autre consiste à utiliser les capacités Java du navigateur,
où l'on peut trouver, au sein de AWT, la méthode beep(),
utilisable avec java.awt.Toolkit.getDefaultToolkit().beep();.
Le résultat n'est pas garanti...
Comme le titre de cet article le laisse supposer, nous lui préférons
une troisième méthode (quoique très proche de la première
par son utilisation de balises spécifiques) : un fichier Flash invisible
(0*0 pixels) qui répond aux appels JavaScript qui lui sont envoyé,
en chargeant et jouant des fichiers MP3. C'est sans doute "trop" pour
un simple bip, mais c'est à l'heure actuelle le plus portable - et extensible
à d'autres utilisations...
L'animation Flash est placée au sein d'une
balise <object>, avec pour id
"monFlash" :
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/
pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="1" height="1" id="monFlash"
align="">
<param
name=movie value="flash-sound-fromJavaScript.swf">
<param name=quality value=high>
<param name=bgcolor value=#FFFFFF>
De son coté, la balise
<embed> comporte aussi quelques informations
:
<embed src="flash-sound-fromJavaScript.swf" quality=high bgcolor=#FFFFFF width="1"
height="1" align="" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"
name="monFlash" swliveconnect="true" play="false" loop="false"></embed>
On place ensuite les codes suivants sur les images-clef de l'animation :
Image 1 :
stop;
Image 2 :
monSon1 = new Sound();
monSon1.loadSound("son1.mp3");
monSon1.start();
Image 3 :
monSon2 = new Sound();
monSon2.loadSound("son2.mp3");
monSon2.start();
(etc. si besoin est)
Vous pouvez donner le même nom aux son (plutôt que monSon1, monSon2)
pour que deux sons ne se jouent pas en même temps...
Dans la page HTML, on utilise
les
méthodes JavaScript du plug-in Flash pour déplacer la tête
de lecture sur les balises appropriées (notez que GotoFrame part de 0...)
:
<input type="submit" name="Submit"
value="Son 1" onClick="monFlash.GotoFrame(1); return false">
<input type="submit" name="Submit2" value="Son 2" onClick="monFlash.GotoFrame(2);
return false">
|