|
|
||||||||||||
Playing Sound from JavaScriptQuestion: How do I write a JavaScript function that plays a sound file? Answer: There are different ways to play sound from JavaScript. Let's consider a couple of examlpes.
Example 1. Here's the simplest cross-browser script for playing a sound file:
Click here to test the code of Example 1. The browser will open a separate sound control window. The user will then have to close this window manually. Note that the script in Example 1 is not user-friendly: every time the user clicks to run this script, the browser will open a new sound control window - even if there might be a couple of other audio windows already playing the same file!
Example 2.
Here's a more complex example in which you won't see a separate
sound control window. (You'll find a discussion below.)
BGSOUND
tag:
<BGSOUND ID="BGSOUND_ID" LOOP=1 VOLUME="-600" SRC="jsilence.mid">Use the following JavaScript code to play a sound file mySound.mid
via the
BGSOUND tag:To start playing: document.all['BGSOUND_ID'].src='mySound.mid'
To stop playing: document.all['BGSOUND_ID'].src='jsilence.mid'
Here mySound.mid
stands for the name of the sound file that you actually want to play;
jsilence.mid
is a "do-nothing" sound file - it does not play
any sound at all, but can be used to stop the playback
of other sound files.
In Netscape Navigator, you'll have to use the LiveAudio plugin;
to do so, you'll need to put an
<EMBED NAME="mySound" SRC="mySound.mid" LOOP=FALSE AUTOSTART=FALSE HIDDEN=TRUE MASTERSOUND>Use the following JavaScript code to control sound in Netscape: To start playing: document.mySound.play()
To stop playing: document.mySound.stop()
The source code of Example 2 is shown below.
The code first tests whether the browser is audio-enabled
and then uses the techniques described on this page.
You'll see two JavaScript functions,
<BGSOUND id="BGSOUND_ID" LOOP=1 SRC="jsilence.mid">
<EMBED NAME="Bach" SRC="Bach.mid"
LOOP=FALSE AUTOSTART=FALSE HIDDEN=TRUE MASTERSOUND>
<script language="JavaScript">
<!--
ver=parseInt(navigator.appVersion)
ie4=(ver>3 && navigator.appName!="Netscape")?1:0
ns4=(ver>3 && navigator.appName=="Netscape")?1:0
ns3=(ver==3 && navigator.appName=="Netscape")?1:0
function playSound() {
if (ie4) document.all['BGSOUND_ID'].src='Bach.mid';
if ((ns4||ns3)
&& navigator.javaEnabled()
&& navigator.mimeTypes['audio/x-midi']
&& self.document.Bach.IsReady()
)
{
self.document.Bach.play()
}
}
function stopSound() {
if (ie4) document.all['BGSOUND_ID'].src='jsilence.mid';
if ((ns4||ns3)
&& navigator.javaEnabled()
&& navigator.mimeTypes['audio/x-midi']
)
{
self.document.Bach.stop()
}
}
//-->
</script>
<form name=myform>
<input type=button value="Play Sound" onClick="playSound()">
<input type=button value="Stop Sound" onClick="stopSound()">
</form>
JavaScripter.net.
Copyright
© 1999-2006, Alexei Kourbatov
|
||||||||||||