Como silenciar todo o som em uma página com JS?

Como posso silenciar todo o som da minha página com JS?

Isso deve desativar as tags HTML5 e junto com o Flash e os amigos.

Regra nº 1: nunca habilite a reprodução automática de áudio no carregamento da página.

De qualquer forma eu vou mostrar para HTML5 usando 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; }); 

Flash Media Players depende da API personalizada (esperançosamente) exposta ao JavaScript.

Mas você começa a idéia, iterar pela mídia, verificar / armazenar o status de reprodução e ativar / desativar o som.

Isso pode ser feito facilmente na baunilha 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 no 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) ); } 

Isso, é claro, só funciona com elementos ou , já que itens como o áudio inicializado em Flash ou JS são impossíveis de restringir em geral.

Eu fiz assim:

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

Mantenha uma referência a todos os elementos de áudio / vídeo dentro de uma matriz e, em seguida, faça uma function que execute um loop sobre eles enquanto define o .muted=true .