跨平台,跨浏览器的方式来播放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