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

firefox 25 does not have play() defined for audio tags?

本文关键字:定义 play 标签 音频 Firefox      更新时间:2023-09-26

我有以下音频标签:

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

我想通过 js 播放它,所以自然而然地我希望调用 $("audio").play() 来做到这一点(它是页面上唯一的音频标签),但我收到一个错误,指出未定义播放。经过检查,情况确实如此。音频元素没有播放属性。我读到的每个教程或资源都说这就是你需要做的,但是......好吧,我就是做不到。我的FF版本刚刚损坏,还是我以某种方式错过了这些不同文本中未说明的内容?

play()是一个DOM方法,而不是jQuery方法,这意味着你需要先获取实际的DOM元素,然后才能获取play属性。要获取实际的 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(); });

正如澳洲航空提到的,play不是jQuery方法,但如果需要,您可以轻松添加它,如下所示:

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