第二个动态加载的YouTube播放器对象无法播放

时间:2016-12-22 21:54:38

标签: javascript youtube youtube-api

简而言之,这是一个问题:

当我加载页面时,我使用YouTube的API创建了一个YouTube播放器对象,效果很好。

当用户点击播放按钮时,我在旋转木马内动态创建了另一个YouTube播放器对象。该对象已创建,甚至出现在轮播中,但我无法访问它的功能,如playVideo()。

我创建了一个播放器对象数组和一个iframe ID数组,以传递到新的YT.Player对象,所有这些都有效,但第二个视频不会触发任何事件。当我检查并逐步浏览Javascript时,我可以看到播放器对象的属性,我注意到第一个关闭属性和功能,如addCueRange,isMuted,playVideo等。第二个缺少所有这些。它的财产数量非常有限。

我注意到的一件事是名为" B"的财产。在第一个中它是真的,在第二个中它是错误的。这个属性代表什么?

以下是代码的一部分:

var players = {};
var youTubeIframes = [];
var index = 0;
var videoID = "";

...

function addYouTubeEvents( youTubeIframe ) {
  youTubeIframes[index] = youTubeIframe;
  youTubeIframes[index].pauseFlag  = false;

  players[youTubeIframes[index].id] = new YT.Player( youTubeIframes[index], {
    videoId: videoID,
    playerVars: {
      html5: 1
    },
    events: {
      'onReady': function(e){
        onPlayerReady(e);
      },
      'onStateChange': function(evt){
        onStateChangeHandler( evt, youTubeIframes[index] );
      }
    }
  } );
  index++;
}
function onPlayerReady(e){
  console.log("Player is ready");
  if(e.target.a.id == 'youtube-video'){
    e.target.playVideo();
  }
}

0 个答案:

没有答案