You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Wix网站实现选中音频播放器时自动暂停其他播放器?

实现多音频播放器互斥播放(播放一个自动暂停其他)

嗨,针对你这个多直播电台播放器的需求,其实只需要加一点原生JavaScript就能轻松搞定!核心思路就是监听每个播放器的播放事件,一旦有某个音频开始播放,就暂停页面上所有其他的音频播放器

步骤1:给所有音频播放器添加统一类名

首先,先给你的每个<audio>标签加上一个统一的类(比如radio-player),这样我们能轻松选中所有播放器:

<audio class="radio-player" src="https://cbc_r2_tor.akacast.akamaistream.net/7/364/451661/v1/rc.akacast.akamaistream.net/cbc_r2_tor" controls style="width:75px;" volume="1.0"></audio>
<audio class="radio-player" src="http://204.2.199.166/7/288/80873/v1/rogers.akacast.akamaistream.net/tor925" controls="true" style="width:75px;" volume="1.0"></audio>
<!-- 其他播放器也同样加上class="radio-player" -->

步骤2:添加JavaScript实现互斥逻辑

接下来添加一段脚本,监听每个播放器的play事件,当事件触发时,遍历所有播放器并暂停当前播放的那个之外的所有音频:

// 获取所有带radio-player类的音频元素
const players = document.querySelectorAll('.radio-player');

// 给每个播放器绑定play事件监听
players.forEach(player => {
  player.addEventListener('play', () => {
    // 遍历所有播放器,暂停非当前播放的音频
    players.forEach(otherPlayer => {
      if (otherPlayer !== player) {
        otherPlayer.pause();
      }
    });
  });
});

代码说明

  • document.querySelectorAll('.radio-player'):一次性选中所有我们标记好的音频播放器,比一个个单独选id高效很多。
  • play事件:当用户点击播放按钮或者音频自动开始播放时,这个事件会触发。
  • otherPlayer.pause():调用音频元素的原生暂停方法,直接停止其他正在播放的音频。

这个方案很轻量,不需要引入任何框架,纯原生JS就能实现,完全适配你现有的播放器结构~

内容的提问来源于stack exchange,提问作者timusR

火山引擎 最新活动