我想在特殊事件中在Safari中播放声音。 这就是我正在做的事情
<html>
<head>
<in a js file>
if(event)
document.getElementById('sound').play();
</in a js file>
</head>
<body>
<audio id="sound" src="pling.mp3"></audio>
</body>
</html>
声音pling.mp3与html文件位于同一文件夹中。
Safari开发者控制台的结果是: TypeError:表达式'document.getElementById('sound')的结果.play'[undefined]不是函数。
我做错了什么? 这不是它的工作方式吗?
答案 0 :(得分:3)
尝试以下方法:
document.getElementById('sound')[0].play();
答案 1 :(得分:-1)
我会使用Audio API,如here所述,在某些事件发生后播放声音效果。在我看来,音频标签更适合通过UI播放,停止和控制的歌曲。如果您使用audio
标签,则必须先暂停和后退才能再次播放。您可以使用this script自动执行此操作。
如果您想在悬停事件中播放音频,请在jQuery中执行以下操作:
// iterate through the elements that must have audio applied on hover
$('.audio_effect').each(function() {
$(this).on('mouseover', function() {
new Audio('path-to-audiofile.mp3').play();
});
});
由于您无法在不重置其内部指针的情况下再次播放音频元素,因此最简单的操作方法是在每次悬停时创建新元素,就像我上面所做的那样。