首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >多音频html :当前正在播放javascript时自动停止其他

多音频html :当前正在播放javascript时自动停止其他
EN

Stack Overflow用户
提问于 2013-11-05 13:47:39
回答 8查看 31.5K关注 0票数 32

我有10个音频播放器与简单的html音频标签在一个html5页面。没有jquery,没有特别的音频js插件等等..。

有没有人在js中有一个简单的脚本来在当前玩家播放时暂停所有其他玩家?

我不想使用js插件,因为我想保留一个简单的音频html代码。

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2013-11-05 15:09:52

您可以使用事件委托。只需在捕捉阶段收听播放事件,然后暂停所有视频文件,但不是目标文件:

代码语言:javascript
运行
复制
document.addEventListener('play', function(e){
    var audios = document.getElementsByTagName('audio');
    for(var i = 0, len = audios.length; i < len;i++){
        if(audios[i] != e.target){
            audios[i].pause();
        }
    }
}, true);
票数 111
EN

Stack Overflow用户

发布于 2015-03-14 04:30:19

您可以使用存储当前播放元素的引用,而不是遍历页面上的所有音频标记并暂停它们,并且在播放另一个元素时只有一个暂停。

代码语言:javascript
运行
复制
document.addEventListener("play", function(evt) {
    if(this.$AudioPlaying && this.$AudioPlaying !== evt.target) {
        this.$AudioPlaying.pause();
    }
    this.$AudioPlaying = evt.target;
}, true);
票数 12
EN

Stack Overflow用户

发布于 2016-06-11 14:21:29

之前的两个答案都不管用,我就用过了。我刚刚添加了&& window.$_currentlyPlaying != evt.target,一切都在工作。同时,我还为音频标签创建了一个带有这个和其他好处的要点。javascript-音频标签

代码语言:javascript
运行
复制
window.addEventListener("play", function(evt)
{
    if(window.$_currentlyPlaying && window.$_currentlyPlaying != evt.target)
    {
        window.$_currentlyPlaying.pause();
    } 
    window.$_currentlyPlaying = evt.target;
}, true);
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19790506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档