我正在写一个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()
尝试过此代码,并且在大多数使用以下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 示例!