Comment couper tous les sons dans une page avec JS?

Comment puis-je couper tout le son sur ma page avec JS?

Cela devrait muet HTML5 <audio> et <video> tags avec Flash et ses amis.

16
demandé sur Zach Saucier 2012-12-26 22:42:36

4 réponses

règle n ° 1: N'activez jamais audio autoplay lors du chargement de la page.

de toute façon je vais montrer pour HTML5 en utilisant jQuery:

// 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;

});

les lecteurs Flash Media dépendent de L'API personnalisée (hopefuly) exposée à JavaScript.

mais vous obtenez l'idée, itérez à travers les médias, Vérifiez/stockez le statut de lecture, et muet/unmute.

7
répondu David Strencsev 2013-03-11 13:19:00

cela peut facilement être fait dans vanilla 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 videos = document.querySelectorAll("video"),
        audios = document.querySelectorAll("audio");

    [].forEach.call(videos, function(video) { muteMe(video); });
    [].forEach.call(audios, function(audio) { muteMe(audio); });
}

ou dans 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").forEach( video => muteMe(video) );
    document.querySelectorAll("audio").forEach( audio => muteMe(audio) );
}

bien entendu, Cela ne fonctionne qu'avec <video> ou <audio> éléments, comme des éléments comme Flash ou JS audio initialisé est impossible à restreindre en général.

13
répondu Zach Saucier 2018-06-19 20:31:59

j'ai fait comme ceci:

Array.prototype.slice.call(document.querySelectorAll('audio')).forEach(function(audio) {
    audio.muted = true;
});
1
répondu John Doherty 2016-11-15 11:37:58

tenir une référence à tous les éléments audio / vidéo à l'intérieur d'un tableau et ensuite faire une fonction qui effectue une boucle sur eux tout en mettant le .muted=true.

1
répondu Gooshan 2017-06-16 10:41:44