我想使我的网站中的音频和视频声音静音。不会是任何特定的ID或类名。我完全不知道ID名称是什么。所以我想通过video / object / div / src html标记名称进行跟踪,并使声音静音。

javascript可以做到吗?我已经尝试了以下代码;但它不起作用。我感谢您的最佳建议。

<!DOCTYPE html>
<html>
<body>

<button onclick="enableMute()" type="button">Mute sound</button>


<video width="320" height="176" controls>
  <source src="mov_bbb.mp4" type="video/mp4">
  <source src="mov_bbb.ogg" type="video/ogg">
  Your browser does not support HTML5 video.
</video>

<script>
var vid = document.getElementsByTagName("video");

function enableMute() {
    vid.muted = true;
}


</script>


</body>
</html>

最佳答案

document.getElementsByTagName返回对象的集合。因此,如果您要全部静音,则只需遍历它们并使其静音即可:

document.onload = function() {
    var videos = document.getElementsByTagName('video');

    for (var i = 0; i < videos.length; i++) {
        videos[i].muted = true;
    }

    var audios = document.getElementsByTagName('audio');

    for (var i = 0; i < audios.length; i++) {
        audios[i].muted = true;
    }
}


由于您将问题标记为jQuery,因此这是jQuery的变体:

$(document).ready(function() {
    $('video, audio').prop('muted', true);
});


更新-如何使iframe静音

要使iframe静音,则有所不同。同样,您可以遍历它们,但是它们没有mute属性。

在JavaScript中:

var iframes = document.getElementsByTagName('iframe');

for (var i = 0; i < iframes.length; i++) {
    iframes[i].contentWindow.postMessage('{"method":"setVolume", "value":0}', '*');
}


jQuery变体:

$('iFrame').each(function() {
    this.contentWindow.postMessage('{"method":"setVolume", "value":0}', '*');
});


JavaScript demo

jQuery demo

关于javascript - 如何使网站上的音频/视频静音任何标签?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31593766/

10-10 07:51
查看更多