这似乎是一个反复出现的问题,因为在过去的几年中,YouTube API Google集团上发布了许多相似的帖子。使用YouTube iFrame API(仅尝试HTML5而不是Flash)onStateChange事件正确触发(并调用指定的处理程序),但传递的数据属性未定义。我正在运行OS X Mountain Lion,并且使用Chrome(23.0.1271.64)和Safari(6.0.2)都会发生错误。
对此问题的任何想法都会受到最高的赞赏。
选定的代码段
myapplication.controllers.Player = function(containerId, videoId) {
[...]
this.player = new YT.Player(this.currentView_.playerContainer_, {
videoId: videoId,
playerVars: { 'showinfo': 0, 'modestbranding': 1, 'rel': 0 },
suggestedQuality: 'medium'
});
[...]
goog.events.listen(this.player, 'onStateChange', this.onPlayerStateChange_,
false, this);
[...]
};
myapplication.controllers.Player.prototype.onPlayerStateChange_ = function(e) {
if (e.data == 1) {
this.startTimer_(100);
} else {
this.stopTimer_();
};
};