【问题标题】:I have multiple HTML 5 <Audio> tags on one page and I want ALL of them to pause when another is played我在一个页面上有多个 HTML 5 <Audio> 标签,我希望所有标签在播放另一个标签时都暂停
【发布时间】:2020-02-16 19:08:49
【问题描述】:

我想我需要一个脚本来“获取”所有正在播放的 HTML5 音频控件并“暂停”它们,除了用户点击播放的那个之外。我已经看到并且可以仅使用一个音频控件来处理简单的播放、暂停、停止,但我的技能远远达不到编写我想要的多个音频控件的能力。音频控件是一个简洁的解决方案,并且与我当前的设计很好地集成在一起,我只需要帮助使其正常工作。用例:

https://aberaeronskies.com/ 页面加载并没有播放任何需要的内容,用户单击音频控件标签上的播放,并且播放所需的轨道 sn-p。用户点击另一个(有14个)开始播放,麻烦的是,第一个还在播放,这是不想要的;一个人可以点击所有的,他们都会玩!

要求是脚本或电话或其他任何内容(我不是编码员,只是作为伴侣的免费赠品),当用户在 14 首曲目中的任何一首上单击播放时,它会暂停所有其他正在播放的曲目。

我以为是这样:Pause all other players besides activated one. jQuery audio plugin for <audio> elementPlay selected audio while pausing/resetting others 但我无法让它们工作。

这可能是无法做到的,我需要重新考虑多个曲目的整个呈现方式,如果是这样,关于在哪里看的进一步建议(除了上述内容)也会很有用。

非常感谢...

【问题讨论】:

  • 欢迎来到 Stack Overflow。请记住,这个论坛是为了帮助回答与代码相关的问题,需要minimal, reproducible example。我们需要查看您尝试了哪些代码以及您在哪里遇到了问题。

标签: html audio controls pause


【解决方案1】:

啊…… 这行得通

var curPlaying;
window.addEventListener("play", function(evt)
{
if(window.$_currentlyPlaying && window.$_currentlyPlaying != evt.target)
{
    window.$_currentlyPlaying.pause();
} 
window.$_currentlyPlaying = evt.target;
}, true);
$(function () {
$(".playback").click(function (e) {
    e.preventDefault();
    var song = $(this).next('audio')[0];
    if (song.paused) {
        if (curPlaying) {
            $("audio", "#" + curPlaying)[0].pause();
        }
        song.play();
        curPlaying = $(this).parent()[0].id;
    } else {
        song.pause();
        curPlaying = null;
    }
});
});
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 2017-03-20
  • 2020-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多