如何在静音与JS页面中所有的声音?(How to mute all sound in a page

2019-07-17 14:33发布

我怎么能静音所有的声音我与JS网页上?

这应该静音HTML5 <audio><video>标签Flash和朋友一起。

Answer 1:

规则#1:决不允许在页面加载音频自动播放。

无论如何,我将展示使用jQuery HTML5:

// WARNING: Untested code ;)

window.my_mute = false;

$('#my_mute_button').bind('click', function(){

    $('audio,video').each(function(){

        if (!my_mute ) {

            if( !$(this).paused ) {
                $(this).data('muted',true); //Store elements muted by the button.
                $(this).pause(); // or .muted=true to keep playing muted
            }

        } else {

            if( $(this).data('muted') ) {
                $(this).data('muted',false);
                $(this).play(); // or .muted=false
            }

        }
    });

    my_mute = !my_mute;

});

闪存媒体播放器依赖于定制的API(hopefuly)暴露给JavaScript。

但你的想法,遍历媒体,检查/存储播放状态和静音/取消静音。



Answer 2:

这可以很容易地在香草JS来完成:

// Mute a singular HTML5 element
function muteMe(elem) {
    elem.muted = true;
    elem.pause();
}

// Try to mute all video and audio elements on the page
function mutePage() {
    var elems = document.querySelectorAll("video, audio");

    [].forEach.call(elems, function(elem) { muteMe(elem); });
}

或ES6:

// Mute a singular HTML5 element
function muteMe(elem) {
    elem.muted = true;
    elem.pause();
}

// Try to mute all video and audio elements on the page
function mutePage() {
    document.querySelectorAll("video, audio").forEach( elem => muteMe(elem) );
}

这一点,当然,仅与工作<video><audio>元素,例如Flash或JS项初始化音频是不可能的一般限制。



Answer 3:

我这样做是这样的:

Array.prototype.slice.call(document.querySelectorAll('audio')).forEach(function(audio) {
    audio.muted = true;
});


Answer 4:

容纳到阵列内的所有音频/视频元素的引用,然后使其在设置在他们执行循环函数.muted=true



文章来源: How to mute all sound in a page with JS?