简而言之,这是一个问题:
当我加载页面时,我使用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();
}
}