firefox 25没有为音频标签定义play()?

时间:2013-11-14 22:53:35

标签: javascript html5 firefox audio

我有以下音频标签:

<audio preload>
  <source src='/sounds/notify.ogg' type='audio/ogg'>
</audio>

我想通过js播放它,所以我自然希望调用$(&#34; audio&#34;)。play()来做它(它是页面上唯一的音频标签),但我得到一个错误,说明游戏没有定义。检查时就是这种情况。音频元素没有播放属性。我读过的每个教程或资源都说这是你需要做的,但是......好吧,我不能这样做。我的FF版本是刚刚破解还是我在某种程度上遗漏了这些不同文本中未说明的内容?

2 个答案:

答案 0 :(得分:4)

play()是一个DOM方法,而不是一个jQuery方法,这意味着在获得play属性之前,您需要获取实际的DOM元素。要获取实际的DOM元素,可以使用jQuery get()方法:

$('audio').get(/*insert element index*/).play();

或只是使用数组索引:

$('audio')[/*insert element index*/].play();

为了更多的选择,你可以做这样的事情:

$('audio').eq(/*insert element index*/).prop('play')();

你甚至可以做这样的事情来播放每个音频元素:

$('audio').each(function () { this.play(); });

答案 1 :(得分:2)

正如Qantas所说,play不是jQuery方法,但如果需要,您可以轻松添加它,如下所示:

$.fn.play = function() {
   return this.each(function() {
      this.play();
   });
}