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

时间:2012-10-13 02:41:45

标签: javascript jquery audio mp3 html5-audio

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

$().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 height="0" width="0" 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();
            }
        }

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

2 个答案:

答案 0 :(得分:1)

小改变。

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

说它是否有效。

更新#1

检查以下内容是否有效:

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

答案 1 :(得分:0)

感谢Praveen Kumar。没有他,我找不到删除'嵌入'的问题。将$('embed').remove();添加到function pauseAllAudio()后。它解决了所有浏览器,但Firefox。那个firefox不喜欢mp3或<embed>标签。我不得不做更多的研究,以使其仅适用于该浏览器。

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 height="0" width="0" src="' + file + '">');
}

我不得不放弃HTML 5 <audio>标记。 :(