Отслеживание видео с помощью отслеживания событий GA


Я пытаюсь настроить отслеживание событий GA на своем сайте для встраивания видео IFRAME Vimeo. Однако я не могу понять, где / как объект отслеживания должен быть размещен в моем коде IFRAME.

Вот мой код для вставки IFRAME:

<iframe src="http://player.vimeo.com/video/51447433" width="500" 
  height="281"frameborder="0" webkitAllowFullScreen 
  mozallowfullscreen allowFullScreen></iframe>

Вот что я думаю GA Event Tracking code должен выглядеть так:

<a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Title']);">Play</a>

Куда это идет в моем коде встраивания? Может кто-нибудь показать мне, как это должно выглядеть/работать?

2 6

2 ответа:

Вам нужно использовать API плеера, потому что вы не можете вводить код внутри iframe на стороннем домене, как это.

Основываясь на документах, предоставленных для player API t должен выглядеть примерно так.

Рабочий Пример

<html>
<head>
  <script type="text/javascript">

  var _gaq = _gaq || [];
  _gaq.push(['_setAccount', 'UA-XXXXXX-1']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
<script>
var f = document.getElementsByTagName('iframe')[0],
    url = f.src.split('?')[0];

// Listen for messages from the player
if (window.addEventListener){
    window.addEventListener('message', onMessageReceived, false);
}
else {
    window.attachEvent('onmessage', onMessageReceived, false);
}

// Handle messages received from the player
function onMessageReceived(e) {
    var data = JSON.parse(e.data);

    switch (data.event) {
        case 'ready':
            onReady();
            break;

        case 'play':
            onPlay();
            break;

        case 'finish':
            onFinish();
            break;
    }
}

// Helper function for sending a message to the player
function post(action, value) {
    var data = { method: action };

    if (value) {
        data.value = value;
    }

    f.contentWindow.postMessage(JSON.stringify(data), url);
}

function onReady() {
    post('addEventListener', 'finish');
    post('addEventListener', 'play');
}


function onFinish() {
    _gaq.push(['_trackEvent', 'Vimeo Video', 'finish', url]);
}

function onPlay() {
    _gaq.push(['_trackEvent', 'Vimeo Video', 'play', url]);
}
</script>
</head>
<body>
  <iframe src="http://player.vimeo.com/video/27855315?api=1" width="400" height="225" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
</body>
</html>

Приведенный выше код можно упростить, используя api Vimeo Mogaloop, который абстрагирует API передачи сообщений для вас, за счет загрузки Javascript с библиотекой.

Плагины готовы к работе используйте

Обратите внимание, что приведенный выше код будет работать только в качестве примера, и если у вас есть несколько видео на странице, это может быть сложнее сделать правильно. В качестве альтернативы вы можете также использовать библиотекуGAS (я там главный разработчик), которая имеет плагиндля отслеживания видео Vimeo .

Предупреждение о совместимости

Обратите внимание на предупреждение о совместимости, я думаю, что если вы вставляете плеер с помощью метода flash, вы можете получить более широкий спектр браузеров поддерживается, но полностью убивает плеер для устройств iOS:

С универсальным кодом встраивания, единственным способом взаимодействия с игрок находится с помощью окна.метод postMessage. postMessage является относительно новым разработка, поэтому он доступен только в Internet Explorer 8+, Firefox 3+, Safari 4+, Chrome и Opera 9+.

Google Analytics on Steroids имеет функцию отслеживания Vimeo. Стоит проверить в