当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《跨平台,跨浏览器的方式从Javascript播放声音?》经验,为你挑选了5个好方法。

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

模拟中的一些步骤要求我们播放音频的"画外音"剪辑.我无法在多个浏览器中找到一种简单的方法来实现这一点.

Soundmanager2非常接近我的需要,但它只播放mp3文件,遗留数据也可能包含一些.wav文件.

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



1> dacracot..:

你必须包含一个像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);
    }
//======================================================================


我从不理解投票.这有效.我把它部署在我的应用程序中.为什么它值得投票?
但它似乎没有播放FF3.0中的声音文件.适用于Chrome 3,IE7.
我不知道你为什么被投票,也许是因为使用了"真正的音频"或"快速时间"这几个字.也许贬低你的人不知道它是如何完成的?至于我,+1,你的代码与最接受的答案中陈述的jQuery插件中使用的代码大致相同......

2> ceejayoz..:

如果您使用的是Prototype,则Scriptaculous库具有声音API.jQuery 似乎也有一个插件.


jQuery插件链接以403响应.

3> 小智..:

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仍然崩溃,歌剧仍然活着.



4> Ilya Kocheto..:

我相信最简单和最方便的方法是使用一个小Flash片段播放声音.我很欣赏它不是JavaScript解决方案,但它是实现目标的最简单方法

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

Scriptaculous,一个Javascript库:http://github.com/madrobby/scriptaculous/wikis/sound

一个开源Flash项目:Easy Musicplayer For Flash http://emff.sourceforge.net/



5> Howard..:

我喜欢dacracot的答案......这是jQuery中的类似解决方案:

function Play(sound) {
    $("#sound_").remove()
    $('body').append('');
}

推荐阅读
mobiledu2402851373
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有