我有一个带onstatechange事件的youtube播放器。开启状态更改事件的工作方式是,我可以查看播放器数据,并且可以确定播放器状态(播放,暂停等),但是我应该可以使用的方法,特别是getVideoData()
和{{ 1}}正在抛出错误“不是函数”。
这是我的JavaScript,请注意,它已配置为在一个页面上处理多个youtube视频,但我认为这并不重要。
var players = [];
var iframes = $('iframe[src*="youtube"]');
iframes.each(function (index) {
var iframeId = "embedded_video" + index;
$(this).attr('id', iframeId);
players[index] = new YT.Player(iframeId, {
events: {
'onStateChange': function (evt) {
var player = evt.target;
var video_data = player.getVideoData(); //FAILING
var pos = player.getCurrentTime() | 0; // FAILING
var videoID = video_data.title;
window.clearInterval(window.trakkInterval);
if (evt.data == YT.PlayerState.PLAYING) {
if (evt.target._initialPlay && trakkIntial) {
// track play
console.log("PLAY");
} else if (evt.target._seekFlag === false && pos != 0) {
// track resume
console.log("RESUME");
}
evt.target._seekFlag = false;
trakkProgress(evt, videoID); // implement
evt.target._pauseFlag = false;
} else if (evt.data === YT.PlayerState.ENDED) {
console.log("COMPLETE");
evt.target._initialPlay = true;
evt.target._seekFlag = false;
} else if (evt.data = YT.PlayerState.PAUSED && evt.target._pauseFlag === false) {
console.log("PAUSE");
}
}
}
});
players[index]._pauseFlag = false;
players[index]._initialPlay = true;
players[index]._seekFlag = false;
});
我需要视频标题和当前时间,以便能够在分析中跟踪视频进度。