如何使用JS将页面上的所有声音静音?
这应该会将HTML5、<audio>
和<video>
标签以及Flash和朋友设置为静音。
发布于 2012-12-27 04:20:24
规则#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;
});
Flash Media Player依赖于向JavaScript公开的自定义应用程序接口(希望如此)。
但是你得到了这个想法,通过媒体迭代,检查/存储播放状态,以及静音/取消静音。
发布于 2016-05-14 04:03:31
这可以在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 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初始化音频这样的项通常是不可能限制的。
发布于 2016-11-15 19:37:58
我是这样做的:
[].slice.call(document.querySelectorAll('audio')).forEach(function(audio) {
audio.muted = true;
});
https://stackoverflow.com/questions/14044761
复制相似问题