Javascript:如何暂停/停止当前播放的音频?

Posted

技术标签:

【中文标题】Javascript:如何暂停/停止当前播放的音频?【英文标题】:Javascript: How to pause/stop currently playing audio? 【发布时间】:2012-10-13 02:41:44 【问题描述】:

我有以下代码可以在我的网站上播放音频。问题是播放音频不会停止或暂停播放新的。所有文件都疯狂地一起播放。

$().ready(function () 
    PlayMp3('sounds/file1.mp3');
    PlayMp3('sounds/file2.mp3');
    PlayMp3('sounds/file3.mp3');
    PlayMp3('sounds/file4.mp3');
);
    function PlayMp3(file) 
            var isiPad = navigator.userAgent.match(/iPad/i) != null;
            var isiPhone = navigator.userAgent.match(/iPhone/i) != null;
            var isiPod = navigator.userAgent.match(/iPod/i) != null;
            pauseAllAudio();

            if (navigator.userAgent.indexOf("Firefox") != -1) 
                file = file.replace("mp3", "ogg");            
                $('#content').append('<audio src="' + file + '" controls preload="auto" autobuffer autoplay="autoplay" style="display:none"></audio>');
            
            else if (isiPad || isiPhone || isiPod)            
                var snd = new Audio(file);
                snd.load();
                snd.play();            
            
            else 
                $('#content').append('<embed   src="' + file + '">');
            


        

        function pauseAllAudio() 
            $('video, audio').each(function () 
                $(this)[0].pause();
            );
            var allAudioEls = $('audio');
            allAudioEls.each(function () 
                var a = $(this).get(0);
                a.pause();
            );

            $('audio').remove();
            if (snd != undefined) 
                snd.pause();
            
        

这不是一个重复的问题。我在这里尝试了类似问题的所有解决方案,但没有一个解决方案适合我。谢谢。

【问题讨论】:

【参考方案1】:

小改动。

$('video, audio').each(function () 
    $(this).get(0).stop();
);

说它是否有效。

更新 #1

检查以下是否有效:

    $(this)[0].pause(); $(this).get(0).pause();

【讨论】:

它不起作用。我什至现在脚本错误为“PM Error: TypeError: $(this).get(0).stop is not a function Source File:” @JonasT 更新了答案。检查两个条件! :) 我已经尝试了您更新的两个答案。他们现在都没有给出脚本错误,但它也没有暂停。 :( 我已经在我正在开发的网站上更新了我的问题。你可以很快地尝试测验,你会看到声音一起播放得非常糟糕。 好的。会检查并通知您。 好人。我将 用于其他浏览器。我添加了 $('embed').remove();它在 chrome 中工作。需要修复才能在 Firefox 中工作。【参考方案2】:

感谢 Praveen Kumar。没有他,我不可能找到删除“嵌入”的问题。将$('embed').remove(); 添加到function pauseAllAudio() 之后。它适用于除 Firefox 之外的所有浏览器。那个 Firefox 不喜欢 mp3 或 &lt;embed&gt; 标签。我必须进行更多研究才能使其仅适用于该浏览器。

jPlayer 看起来很棒,它解决了我的问题。解决方法如下。

 function PlayMp3(file) 
    $('embed').remove();
    if (navigator.userAgent.indexOf("Firefox") != -1) 
            file = file.replace("mp3", "ogg");
            $('#jquery_jplayer').jPlayer("pauseOthers");
            $('#jquery_jplayer').jPlayer("setMedia",  oga: file );
            $('#jquery_jplayer').jPlayer("play");
    
    else 
        $('#content').append('<embed   src="' + file + '">');

我不得不放弃 html 5 &lt;audio&gt; 标签。 :(

【讨论】:

以上是关于Javascript:如何暂停/停止当前播放的音频?的主要内容,如果未能解决你的问题,请参考以下文章

创建一个只有播放和暂停的 Javascript 音频播放列表

多个音频,当当前正在使用 javascript 播放时自动停止其他

JavaScript 按钮停止页面上的所有音频

在IOS核心音频中,如何找到文件播放器音频单元的真实当前播放头位置?

为啥我的停止按钮在这个 javascript 音频播放器上不起作用?

使用当前音频 javascript 创建播放/暂停功能