過去数年間、YouTube API の Google グループに同様の投稿が多数あったため、これは繰り返し発生する問題のようです。YouTube iFrame API (Flash ではなく HTML5 のみを試行) を使用すると、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_();
};
};