【问题标题】:AudioJS: play only html5 audio at time per pageAudioJS:每页一次只播放 html5 音频
【发布时间】:2017-02-10 06:10:33
【问题描述】:

我目前正在使用简单的 AudioJs 脚本,它很容易集成,但如果我在同一页面中有多个音频文件,我希望用户能够点击任何播放并收听而无需停止首先是上一个文件...基本上我需要一个显示“全部停止”的切换按钮然后播放这个

关于如何实现它的任何帮助?

我试过了

    $.each($('audio'), function() {
        this.pause();
    });

但这不会反转按钮和 AudioJs 创建的每个实例的“播放”状态

【问题讨论】:

  • 您是否尝试在document 中的所有音频节点上调用.pause()?您能否将您在 Question 中尝试过的javascript 包含在内?
  • 我每个都尝试过 Jquery,是的,我可以阻止它们,但是它与 AudioJS 指令冲突,因为我无法为 AudioJS 创建的每个实例设置播放=false
  • 没试过AudioJS。库是否使用AudioContext 播放媒体?

标签: javascript jquery html audio


【解决方案1】:

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

1.在所有玩家上绑定onplay

allAud = a.createAll();
for(var i=0; i<allAud.length;i++)
{ 
    allAud[i].element.onplay = function pauseOthers();
}

2.当 onplay 触发循环遍历所有播放器的 &lt;audio&gt; 并暂停除触发事件的那个之外的所有播放器(使用 audiojs 包装器 pause() 方法

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/

【讨论】:

    猜你喜欢
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 1970-01-01
    相关资源
    最近更新 更多