Есть ли событие onStateChange только для начального воспроизведения видео?
Попытка внедрить отслеживание Google при начальном воспроизведении видео прямо сейчас.
API дает 6 состояний,
-1 (unstarted)
0 (ended)
1 (playing)
2 (paused)
3 (buffering)
5 (video cued).
но состояние, которое я использую (1: воспроизведение), срабатывает при каждом клике видео. Я только хочу отследить начальное игровое событие.
Это то, что я до сих пор.
asyncYouTubeApiLoad();
getVideoTrackingValues();
function getVideoTrackingValues() {
$player = $('#player'),
$yt_trackValue = $player.data('tracking-value');
}
executeYouTubeReady();
function executeYouTubeReady() {
// Wait for API
setTimeout(function() {
onYouTubeIframeAPIReady();
}, 200);
}
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
events: {
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerStateChange(event) {
// On Play
if (event.data = 1) {
fireVideoEventTracking('video_play');
}
// On End
else if (event.data = 0) {
fireVideoEventTracking('video_complete');
}
}
function fireVideoEventTracking(eventType) {
_gaq.push(['_trackEvent', 'video', eventType, $yt_trackValue]);
}
1 ответ
Решение
Закончилось добавление логического значения в метод onReady и проверка на это.
var initialLoad = false;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
function onPlayerReady() {
initialLoad = true;
}
function onPlayerStateChange(event) {
console.log(event.data);
// On Play
if (event.data == 1 && initialLoad) {
fireVideoEventTracking('video_play');
initialLoad = false;
} else if (event.data == 0) {
fireVideoEventTracking('video_complete');
}
}