这似乎是一个反复出现的问题,因为在过去几年中,YouTube API Google Group 上有许多类似的帖子。使用 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_();
};
};