1

我正在尝试在 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: Result of expression 'document.getElementById('sound').play' [undefined] is not a function。

我究竟做错了什么?这不就是它应该工作的方式吗?

4

2 回答 2

3

尝试以下操作:

document.getElementById('sound')[0].play();
于 2012-06-04T12:18:48.267 回答
-1

我会使用Audio API,正如这里所解释的,在某些事件之后播放声音效果。在我看来,音频标签更适合通过 UI 播放、停止和控制歌曲。如果您确实使用audio标签,则必须暂停并倒带才能再次播放。您可以使用自动执行此操作的脚本

如果您想在悬停事件上播放音频,请在 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();
  });
});

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

于 2012-06-04T10:08:33.697 回答