Cross-platform, cross-browser way to play sound from Javascript? [duplicate]
You will have to include a plug-in like Real Audio or QuickTime to handle the .wav file, but this should work...
//======================================================================var soundEmbed = null;//======================================================================function soundPlay(which) { if (!soundEmbed) { soundEmbed = document.createElement("embed"); soundEmbed.setAttribute("src", "/snd/"+which+".wav"); soundEmbed.setAttribute("hidden", true); soundEmbed.setAttribute("autostart", true); } else { document.body.removeChild(soundEmbed); soundEmbed.removed = true; soundEmbed = null; soundEmbed = document.createElement("embed"); soundEmbed.setAttribute("src", "/snd/"+which+".wav"); soundEmbed.setAttribute("hidden", true); soundEmbed.setAttribute("autostart", true); } soundEmbed.removed = false; document.body.appendChild(soundEmbed); }//======================================================================
If you're using Prototype, the Scriptaculous library has a sound API. jQuery appears to have a plugin, too.
dacracots code is clean basic dom, but perhaps written without a second thought?Of course you check the existance of an earlier embed first, and save the duplicateembed creation lines.
var soundEmbed = null;//=====================================================================function soundPlay(which){ if (soundEmbed) document.body.removeChild(soundEmbed); soundEmbed = document.createElement("embed"); soundEmbed.setAttribute("src", "/snd/"+which+".wav"); soundEmbed.setAttribute("hidden", true); soundEmbed.setAttribute("autostart", true); document.body.appendChild(soundEmbed);}
Came across the thoughts here while scanning for a solution for somewhat similar situation. Unfortunately my browser Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.15) Gecko/2009102814 Ubuntu/8.04 (hardy) Firefox/3.0.15 dies when trying this.
After installing latest updates, firefox still crashes, opera keeps alive.