【问题标题】:Youtube api event only applies to first elementYoutube api 事件仅适用于第一个元素
【发布时间】:2016-06-25 10:45:07
【问题描述】:

我正在制作一个带有 youtube 视频的滑块,我想静音所以我做了这个:

window.onYouTubePlayerAPIReady = function() {
player = new YT.Player('video', {
    events: {
        'onReady': onPlayerReady
    }
});
}

function onPlayerReady(event) {
    event.target.mute();
}

这行得通!但仅限于第一个视频。检查jsfiddle。如果您暂停第二个视频,您会看到第一个视频被静音。我尝试循环事件但没有运气

JSfiddle

【问题讨论】:

    标签: javascript jquery html css youtube-api


    【解决方案1】:

    您需要为每个视频应用此设置。

    您还需要为 iframe 元素使用唯一的 id 值。

    所以在将第一个 id 更改为 video 和第二个 video2 之后,脚本

    window.onYouTubePlayerAPIReady = function() {
        player = new YT.Player('video', {
            events: {
                'onReady': onPlayerReady
            }
        });
        player2 = new YT.Player('video2', {
            events: {
                'onReady': onPlayerReady
            }
        });
    }
    
    function onPlayerReady(event) {
        event.target.mute();
    }
    

    现在有效

    http://jsfiddle.net/gaby/mre4dvbe/2/更新演示


    更新版本 cmets之后

    window.onYouTubePlayerAPIReady = function() {
      var videos = document.querySelectorAll('.yt-video');
    
      [].forEach.call(videos, function(video) {
        new YT.Player(video, {
          events: {
            'onReady': onPlayerReady
          }
        });
      });
    }
    
    function onPlayerReady(event) {
      event.target.mute();
    }
    

    这适用于任意数量的视频(共享同一类yt-video

    http://jsfiddle.net/gaby/mre4dvbe/5/的演示

    【讨论】:

    • 忘了提,但我不能这样做。因为 iframe 是通过 CMS 加载的,所以我不知道会有多少 iframe,所以我不能给它们不同的类/ID
    • 好的,那么您必须识别它们并应用代码。将在一秒钟内更新答案
    • @C.Schubert 你可以编辑模板以便视频也有一个类吗?例如class="yt-video"
    • 是的,我可以。但我不能给他们不同的课程。
    • 好的,我们希望类相同,但id 必须不同,因为它无效。
    猜你喜欢
    • 1970-01-01
    • 2023-01-07
    • 1970-01-01
    • 2013-01-11
    • 2011-08-25
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-03-11
    相关资源
    最近更新 更多