【问题标题】:play/stop hidden audio track播放/停止隐藏的音轨
【发布时间】:2014-05-31 12:32:51
【问题描述】:

我有一个 ASIDE 元素,当使用 Jquery UI 单击按钮时,我将其设置为从右侧滑入和滑出。默认情况下它处于关闭状态。它包含 HTML5 音频。我希望在幻灯片打开时从头开始播放音频,并在幻灯片关闭时停止播放,这样它就像只在幻灯片打开时播放的背景音乐曲目。我希望音频不会在其父元素的显示设置为“无”时播放,但事实并非如此。

我实际上有两个控制滑动元素的按钮。一个是切换按钮,另一个是在滑动元素内部作为关闭按钮。

$(document).ready(function() {
  $("#AnsExpl_btn a").click(function() {
    $("aside").toggle("slide", { direction: "right" });
  });
  $("#AnsExpl_x a").click(function() {
    $("aside").hide("slide", { direction: "right" });
  });
});

我尝试了在网上找到的不同可能的 Jquery/Javascript 解决方案,但没有任何效果。任何帮助将不胜感激,因为我认为我已经用尽了 Google 搜索。

【问题讨论】:

    标签: jquery html html5-audio


    【解决方案1】:

    您可以简单地暂停并与按钮同步播放 - 假设您的音频元素是在变量 audio 中获得的:

    var audio = $('#bgtrack')[0]; // get native audio element
    
    $("#AnsExpl_btn a").click(function() {
        $("aside").toggle("slide", { direction: "right" });
        audio.currentTime = 0;
        audio.play();
    });
    
    $("#AnsExpl_x a").click(function() {
        $("aside").hide("slide", { direction: "right" });
        audio.pause();
    });
    

    设置位置是异步的,如果设置正确,您应该监听seeked 事件然后播放:

    audio.addEventListener('seeked', function() {this.play()}, false);
    
    $("#AnsExpl_btn a").click(function() {
        $("aside").toggle("slide", { direction: "right" });
        audio.currentTime = 0;
    });
    

    更新:FIDDLE

    【讨论】:

    • 它似乎不起作用,但我可能做错了什么。我正在尝试将其添加到外部 .js 文件中。我注意到如果我将音频设置为自动播放,然后单击链接以激活幻灯片,即使我没有代码这样做,音频也会停止。我在页面上也有多个音频标签,但我试图用#track 控制一个。
    • @Maxor 在没有相关代码的情况下很难获得概述。你有机会设置一个小提琴,以便我们更深入地研究它吗?
    • 这是我第一次使用 jsfiddle。这是网站的基本布局。 jsfiddle.net/Q7NQ6/1 当我在代码中有 AUDIO 标签时,JSfiddle 不断给出一些发布错误,所以我不得不删除它。它会在结束 ASIDE 标记的正上方并包含 id="bgtrack" 和两个源 track.mp3 和 track.ogg。我还将在页面上添加一些其他音频提示,它们已经正常工作,但与此按钮或幻灯片无关。它们更像是音效,而我尝试添加的将是仅在 ASIDE 可见时播放的背景音乐。
    • jsfiddle.net/Q7NQ6/3 这是一个添加了音频的新链接。 Noscript 导致了 jsfiddle 中的错误。顺便说一句,我正在使用 Firefox。由于某种原因,该幻灯片在 jsfiddle 中似乎无法在 IE11 中使用,但它可以在我的实际网站上使用。
    • @Maxor 谢谢,只是一个问题:音频文件链接到 jsfiddle 站点(当然没有音频文件)。我添加了一个声音效果的链接,并用答案中的代码更新了小提琴。唯一缺少的是您需要按照说明获取音频元素。短样本有时会摆脱浏览器中的缓冲机制,但您应该能够看到它的工作原理。希望这会有所帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多