【问题标题】:JS – stopping multiple youtube videos when another one starts playingJS – 当另一个开始播放时停止多个 youtube 视频
【发布时间】:2015-10-03 14:36:40
【问题描述】:

我正在使用以下代码(由我的朋友编写,我是 JS 的初学者)创建了几个带有不同 youtube 视频的 iframe,然后我可以使用 seekTo(t) 函数从文本中链接到-

var players = [];

function onYouTubeIframeAPIReady() {
    YTready()
}

function createPlayer(ref, divID, videoID) {
    players[ref] = new YT.Player(divID, {
        height: '360',
        width: '640',
        videoId: videoID,
        events: {}
    });
}

function jumpToTimecode(ref,t){
    for(var i=0;i<players.length;i++){
        if(i!=ref){
            players[i].stopVideo()
        }
    }
    players[ref].seekTo(t)
    players[ref].playVideo()
}      

它包含一种在用户单击链接后停止所有其他视频的方法。如果用户只需单击其中一个 youtube 播放器上的播放按钮,我想做的是添加一个功能可以做同样的事情(停止页面上的所有其他视频)。

我正在考虑在 createPlayer 函数中定义一个 'onStateChange': onPlayerStateChange 事件,然后添加一个函数,当任何玩家将其状态更改为正在播放时 // if (event.data == 1) // 会循环遍历所有玩家并停止任何不是被点击的玩家。不过,我不确定如何引用被点击的播放器(因为它可能是其中任何一个,所以我事先不知道它的 'ref' 值)。

或者这是处理此问题的错误方法? 任何帮助将不胜感激。

【问题讨论】:

    标签: javascript arrays iframe youtube


    【解决方案1】:

    好的,我解决了这个问题(在我朋友的帮助下)。

    function onPlayerStateChange(event) {
        if(event.data == 1) {
            var ref = event.target.f.id
            for(var i=0;i<players.length;i++){
            if(players[i].f.id != ref){
                players[i].stopVideo()
            }
          }
       }
    }
    

    event.target.f.id 是创建时(由我)给玩家的唯一 id。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-18
      • 2022-12-03
      • 1970-01-01
      • 2021-02-07
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多