通过javascript在浏览器(Chrome)中播放声音

use*_*956 7 javascript audio

我正在写一个HTML页面.我想让它发出声音,正如它运行时的一些javascript所指定的那样.

在html中,正如我在这里读到的答案所推荐的,我有这条线

<embed src="wavs/beep.wav" autostart="true" width="0" height="0" id="beep" 
  enablejavascript="true">
Run Code Online (Sandbox Code Playgroud)

这会在加载时播放声音,因此我确信我已经为有效的.wav文件提供了有效路径.(一旦一切正常,我会将自动启动设置为false.)

我有一个功能

function playSound ( soundname )   
  {
    var thissound = document.getElementById( soundname );
    thissound.Play();
    alert( "Played " + soundname );
  }
Run Code Online (Sandbox Code Playgroud)

我打电话使用

  playSound( "beep" );
Run Code Online (Sandbox Code Playgroud)

但是当进行该呼叫时,虽然发生了警报,但没有声音.它看起来像我在推荐的方式做一切,但我一定有错.我接下来应该检查什么?

Ili*_*asT 14

使用本机HTML5音频API

在Chrome的控制台中尝试创建一个Audio元素的新实例,传入要缓冲的声音的路径.例如,如果我们想要打字机声音,我们可以做类似的事情:

var typeWriter = new Audio("https://www.freesound.org/data/previews/256/256458_4772965-lq.mp3");

注意:要准确缓冲并避免出现CSRF问题,您必须在www.freesound.org的控制台中工作

typeWriter 现在代表一个html音频标签.

尝试通过设置制作声音循环 typeWriter.loop = true

最后,用typeWriter.play()&播放/暂停声音typeWriter.pause()


Nos*_*lvi 5

尝试过此代码,并且在大多数使用以下js方法的浏览器中都可以正常运行

function playSound(soundfile_ogg, soundfile_mp, soundfile_ma) {
    if ("Audio" in window) {
        var a = new Audio();
        if (!!(a.canPlayType && a.canPlayType('audio/ogg; codecs="vorbis"')
                .replace(/no/, '')))
            a.src = soundfile_ogg;
        else if (!!(a.canPlayType && a.canPlayType('audio/mpeg;').replace(/no/,
                '')))
            a.src = soundfile_mp;
        else if (!!(a.canPlayType && a.canPlayType(
                'audio/mp4; codecs="mp4a.40.2"').replace(/no/, '')))
            a.src = soundfile_ma;
        else
            a.src = soundfile_mp;

        a.autoplay = true;
        return;
    }
}
Run Code Online (Sandbox Code Playgroud)


小智 1

难道不应该是 .play() - 带小写“p”吗?

根据您想要支持的浏览器,您可能需要考虑将您的浏览器替换<embed>为 HTML5<audio>标记: http: //www.storiesinflight.com/html5/audio.html。此页面还有一些有效的 js 示例!