在野生动物园播放声音

时间:2011-06-08 11:02:59

标签: javascript html5 html5-audio

我想在特殊事件中在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]不是函数。

我做错了什么? 这不是它的工作方式吗?

2 个答案:

答案 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();
  });
});

由于您无法在不重置其内部指针的情况下再次播放音频元素,因此最简单的操作方法是在每次悬停时创建新元素,就像我上面所做的那样。