跨平台,跨浏览器的方式来播放Javascript的声音?

我在写一个dhtml应用程序,创build一个系统的交互式模拟。 模拟的数据是从另一个工具生成的,并且已经有大量的遗留数据。

模拟中的一些步骤要求我们播放audio的“配音”剪辑。 我一直无法find一个简单的方法来实现跨多个浏览器。

Soundmanager2非常接近我所需要的,但它只会播放MP3文件,而传统数据也可能包含一些.wav文件。

有没有人有任何其他图书馆可能有帮助?

您将不得不包含像Real Audio或QuickTime这样的插件来处理.wav文件,但是这应该可行…

//====================================================================== 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); } //====================================================================== 

如果你正在使用Prototype,Scriptaculous库有一个良好的API 。 jQuery 似乎也有一个插件 。

dacracots的代码是干净的基本dom,但也许没有第二个念头? 当然,你先检查先前embedded的存在,然后保存重复的embedded创build行。

 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); } 

在扫描某种类似情况的解决scheme时,在这里看到了这些想法。 不幸的是我的浏览器Mozilla / 5.0(X11; U; Linux i686; en-US; rv:1.9.0.15)Gecko / 2009102814 Ubuntu / 8.04(hardy)

安装最新的更新后,Firefox仍然崩溃,歌剧保持活力。

我相信最简单最方便的方法就是使用小型的Flash剪辑播放声音。 我很感激这不是一个JavaScript解决scheme,但它是实现您的目标的最简单的方法

从以前的类似问题的一些额外的链接:

  • Scriptaculous,一个Javascript库: http : //github.com/madrobby/scriptaculous/wikis/sound
  • 一个开源的Flash项目:Easy Musicplayer For Flash http://emff.sourceforge.net/

我喜欢dacracot的答案…这是在jQuery中类似的解决scheme:

 function Play(sound) { $("#sound_").remove() $('body').append('<embed id="sound_" autostart="true" hidden="true" src="/static/sound/' + sound + '.wav" />'); } 

如果您正在使用Mootools,则有MooSound插件 。

您可以使用HTML5 <audio>标记。

 <audio controls> <source src="horse.ogg" type="audio/ogg"> <source src="horse.mp3" type="audio/mpeg"> Your browser does not support the audio element. </audio> 

有关更多详细信息,请参阅http://www.w3schools.com/html/html5_audio.asp

有一个更简单的解决scheme,而不是不得不诉诸插件。 IE有它自己的bgsound属性,还有另外一种方法可以使它适用于所有其他的浏览器。 看看我的教程在这里= http://www.andy-howard.com/how-to-play-sounds-cross-browser-including-ie/index.html