我正在写一个html页面。我想让它发出声音,正如一些javascript所指定的那样。
在html中,正如我在这里读到的答案所推荐的,我有一行
<embed src="wavs/beep.wav" autostart="true" width="0" height="0" id="beep"
enablejavascript="true">
这会在加载时播放声音,因此我确信我已经为有效的.wav文件提供了有效路径。 (一旦一切正常,我会将自动启动设置为false。)
我有一个功能
function playSound ( soundname )
{
var thissound = document.getElementById( soundname );
thissound.Play();
alert( "Played " + soundname );
}
我打电话使用
playSound( "beep" );
但是当进行该呼叫时,虽然发生了警报,但没有声音。它看起来像我在推荐的方式做一切,但我一定有错。我接下来应该检查什么?
答案 0 :(得分: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()
&amp;播放/暂停声音typeWriter.pause()
答案 1 :(得分: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;
}
}
答案 2 :(得分:2)
您收到错误,因为getElementById为您提供了embed元素而不是音频元素。嵌入元素不知道怎么玩。换句话说,嵌入元素中没有播放方法。使用以下代码正确播放。
<html>
<script>
function playSound ( soundname )
{
var thissound = document.getElementById( soundname );
thissound.play();
alert( "Played " + soundname );
}
</script>
<body>
<audio src="wavs/beep.wav" id="beep" autostart="false"></audio>
<input type=button onclick="playSound('beep')">play</input>
</body>
</html>
还有一点需要注意。根据您可能希望支持的浏览器,您需要定义多个版本的音频源。有关详细信息,请参阅this。
答案 3 :(得分:1)
不应该是.play() - 小写'p'?
根据您要支持的浏览器,您可能需要考虑将您的<embed>
替换为HTML5 <audio>
代码:http://www.storiesinflight.com/html5/audio.html。这个页面也有一些工作js例子!