У меня есть игрок на YouTube с событием onstatechange.Событие onstate change работает так, что я вижу данные игрока и могу определить состояние игрока (воспроизведение, пауза и т. Д.), Но методы, которые я должен использовать, в частности getCurrentTime()
и getVideoData()
, это:throwing являются выбросом ошибки «это не функция».
Это мой 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;
});
Мне нужно указать заголовок видео и текущее время, чтобы отслеживать ход видео в аналитике.