У меня есть видео Vimeo, встроенное на мою веб-страницу, и я хочу записать событие Google Analytics, когда пользователь просматривал видео в течение 10 секунд. Есть ли способ измерить, как долго просматривается видео? Для справки игрок использует: player.js -/* VimeoPlayer - v2.7.1 - 2015-06-26 */Как я могу измерить, как долго просматривалось встроенное видео Vimeo?
ответ
<video>
элементы emit events. Если ваш игрок использует <video>
, вы можете добавить прослушиватели событий для событий timeupdate
или прослушать play
/pause
событиями и сами провести отсчет времени.
Событие API vimeo содержит seconds
.
Таким образом, вы можете попросить, чтобы слушать это событие, и проверить это имущество, находящееся более 10.
function postMsg(id){
var msg = {method:"addEventListener", value: 'playProgress'};
var iframe = document.getElementById(id), cW;
if(iframe) cW = iframe.contentWindow;
if(!cW){setTimeout(function(){postMsg(id)}, 200); return;}
cW.postMessage(JSON.stringify(msg), '*');
}
var messageListener = function(e){
if (!(/^https?:\/\/player.vimeo.com/).test(e.origin))
return false;
var evt = JSON.parse(e.data);
if(evt.event==='ready') postMsg(evt.player_id);
if(evt.event==='playProgress') onPlayProgress(evt.data);
}
function onPlayProgress(data) {
if(data.seconds > 10) doSomething();
}
window.addEventListener('message', messageListener, false);
iframe.src="http://player.vimeo.com/video/theVideoId?api=1&player_id="+iframe.id;
Просто чтобы сделать его более сложным, что, если видео находится внутри модального, что означает, что он не добавляется в DOM до тех пор, пока модаль не будет заложен кликом? – guru
Я думаю, вам нужно подождать, пока кадр не загрузится, прежде чем сможет получить доступ к его контенту contentWindow и, следовательно, поговорить с API vimeo – Kaiido
Vimeo игрок использует IFRAME, так что вы должны отправить их пользовательские сообщения – Kaiido