Как отключить звук на моей странице с помощью JS?
Это должно отключить теги HTML5 <audio>
и <video>
вместе с Flash и друзьями.
Как отключить звук на моей странице с помощью JS?
Это должно отключить теги HTML5 <audio>
и <video>
вместе с Flash и друзьями.
Правило №1: Никогда не включайте автозапуск аудио при загрузке страницы.
В любом случае я покажу для HTML5 с помощью 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 зависят от пользовательского API (надеюсь), подверженного JavaScript.
Но вы получаете идею, итерацию через медиа, проверку/сохранение состояния воспроизведения и отключение/включение звука.
Это легко сделать в ваниле 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); });
}
Это, конечно, работает только с элементами <video>
или <audio>
, поскольку такие элементы, как инициализированный звук Flash или JS, вообще невозможно ограничить.
Удерживайте ссылку на все аудио/видео элементы внутри массива, а затем создайте функцию, которая выполняет цикл над ними при установке .muted=true
.
Я сделал это вот так:
Array.prototype.slice.call(document.querySelectorAll('audio')).forEach(function(audio) {
audio.muted = true;
});