【问题标题】:Play next html5 audio when one above it finishes当上面的一个完成时播放下一个 html5 音频
【发布时间】:2017-10-12 05:29:03
【问题描述】:

您好,我有一系列音频剪辑。

<div class="audio-wrapper">
    <audio controls>
      <source src="aduio1.mp3" type="audio/mpeg">
    </audio>
</div>

<div class="audio-wrapper">
    <audio controls>
      <source src="aduio2.mp3" type="audio/mpeg">
    </audio>
</div>

<div class="audio-wrapper">
    <audio controls>
      <source src="aduio3.mp3" type="audio/mpeg">
    </audio>
</div>

<div class="audio-wrapper">
    <audio controls>
      <source src="aduio4.mp3" type="audio/mpeg">
    </audio>
</div>

在我的实际代码中,音频通过一个大型 wordpress 页面展开。

我想知道是否可以在上面的一个完成后播放下一个?例如,如果播放 html 顶部附近的一个,那么它会找到下一个并播放它,依此类推。

例如,如果有人在第一个按钮上按了播放,并且它一直播放到最后。它下面的一个将开始播放,依此类推。

另一个例子,如果有人在第 3 个播放器上播放并且那个播放器完成了,那么第 4 个将开始播放。

感谢您的帮助!

(想想播客网站)

【问题讨论】:

  • 您尝试过任何代码吗?有自己的脚本吗?
  • 你能分享一下你的网址吗?
  • 一般来说,您正在寻找一个Eventadd 一个Listener
  • 我的建议是,当当前正在播放的一个通过播放达到一定百分比(50?)时开始获取下一个,这将使过渡更平滑,而无需预先下载所有内容:p - 再次,这个可以由add触发适当的Event处理程序或Listener
  • 如果你真的想模拟简单地点击这些按钮,请使用document.querySelectorAll('button[title="Play"]'); 来获取所有播放按钮。

标签: javascript jquery html audio media-player


【解决方案1】:

您可以将ended事件附加到".audio-wrapper audio"选择器,使用.is()检查$(this).parent(".audio-wrapper").next(".audio-wrapper")是否存在,如果为真,则调用.play()

const src = "https://upload.wikimedia.org/wikipedia/commons/4/4d/%22Pollinate%22-_Logic_Synth_and_Effects_Demonstration.ogg";

$(".audio-wrapper audio")
.each(function() {
  this.src = src;
})
.on("ended", function(event) {
  let next = $(this).parent(".audio-wrapper")
             .next(".audio-wrapper").find("audio");
  console.log(next)
  if (next.is("*")) {
    next[0].play()
  }
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="audio-wrapper">
    <audio controls>
    </audio>
</div>

<div class="audio-wrapper">
    <audio controls>
    </audio>
</div>

<div class="audio-wrapper">
    <audio controls>
    </audio>
</div>

<div class="audio-wrapper">
    <audio controls>
    </audio>
</div>

【讨论】:

  • 我们在最后一条评论“walk”旁边使用这个逻辑。很快就会让你知道结果。感谢大家的帮助!
  • @PortalP 查看更新后的帖子。 .play() 需要在 DOM 元素上调用,而不是 jQuery 对象
猜你喜欢
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-10
  • 2013-11-03
相关资源
最近更新 更多