我正在编写一个dhtml应用程序,用于创建系统的交互式模拟.模拟的数据是从另一个工具生成的,并且已经有非常大量的遗留数据.
模拟中的一些步骤要求我们播放音频的"画外音"剪辑.我无法在多个浏览器中找到一种简单的方法来实现这一点.
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,但也许没有第二个想法写?当然,您先检查先前嵌入的存在,然后保存重复的嵌入创建行.
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); }
在扫描寻找类似情况的解决方案时遇到了这些想法.不幸的是我的浏览器Mozilla/5.0(X11; U; Linux i686; en-US; rv:1.9.0.15)Gecko/2009102814 Ubuntu/8.04(hardy)Firefox/3.0.15在尝试时死亡.
安装最新更新后,Firefox仍然崩溃,歌剧仍然活着.
我相信最简单和最方便的方法是使用一个小Flash片段播放声音.我很欣赏它不是JavaScript解决方案,但它是实现目标的最简单方法
以前类似问题的一些额外链接:
Scriptaculous,一个Javascript库:http://github.com/madrobby/scriptaculous/wikis/sound
一个开源Flash项目:Easy Musicplayer For Flash http://emff.sourceforge.net/
我喜欢dacracot的答案......这是jQuery中的类似解决方案:
function Play(sound) { $("#sound_").remove() $('body').append(''); }