首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioJS:每页每次只播放html5音频

AudioJS:每页每次只播放html5音频
EN

Stack Overflow用户
提问于 2017-02-10 14:10:33
回答 1查看 98关注 0票数 3

我目前使用的是简单的AudioJs脚本,它非常容易集成,但如果我有多个音频文件在同一个页面上,我希望用户能够点击播放任何和收听,而不需要先停止前一个文件…基本上,我需要一个开关,说“停止所有”,然后播放这个

有关于如何实现这一点的帮助吗?

我试过了

代码语言:javascript
复制
    $.each($('audio'), function() {
        this.pause();
    });

但这并不能反转AudioJs创建的每个实例的按钮和状态

EN

回答 1

Stack Overflow用户

发布于 2017-02-10 17:24:01

这类功能的一般技巧是在所有播放器上绑定onplay事件;当你播放一个播放器时,它会触发现在你暂停所有播放器,除了onplay被触发的那个,但这里的问题是audiojs不提供音频事件(它只提供播放,暂停等方法)在它的包装器objects.But中,你可以做一些事情:每个播放器对象将有一个对它相应的HTML5 <audio>元素的引用(实际上是播放mp3)你可以使用这个和使用element属性直接绑定到那个上。

1.在所有播放器上绑定onplay

代码语言:javascript
复制
allAud = a.createAll();
for(var i=0; i<allAud.length;i++)
{ 
    allAud[i].element.onplay = function pauseOthers();
}

2.当onplay触发器循环遍历所有播放器的<audio>时,暂停除触发事件的那一个以外的所有播放器(使用audiojs包装器pause()方法

代码语言:javascript
复制
function pauseOthers() { 
    for(var j=0; j<allAud.length;j++)
    {
        if(allAud[j].element != this)  //pause all except the one being played
        allAud[j].pause(); // can also use `this.pause()` , but better let audiojs do that incase it's handling some play/pause animation
    }
}

演示:http://jsfiddle.net/rqsxxjmd/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42152605

复制
相关文章

相似问题

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