6

Sto tentando di impostare il monitoraggio eventi di GA sul mio sito per un video Vimeo IFRAME incorporato. Tuttavia, non riesco a capire dove/come deve essere inserito l'oggetto di monitoraggio nel mio codice IFRAME.Monitoraggio video utilizzando il monitoraggio eventi GA

Ecco il mio codice IFRAME embed:

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

Ecco quello che penso il GA Event Tracking codice dovrebbe simile:

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

Da dove viene questo andare nel mio codice embed? Qualcuno può mostrarmi come dovrebbe funzionare/funzionare?

risposta

6

È necessario utilizzare l'API giocatore perché non è possibile inserire codice all'interno di un iframe su un dominio di terze parti come quello.

In base ai documenti forniti per il player API t dovrebbe essere simile a questo.

Working Example

<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> 

Il codice di cui sopra può essere semplificata un utilizzando l'API Vimeo Mogaloop che astrae la Message Passing API per voi, a costo di caricamento del Javascript con la libreria.

Plugin Pronto per l'uso

Si noti che il codice di cui sopra funziona solo come esempio e se si dispone di più video in una pagina può essere più difficile per farlo bene. In alternativa puoi anche usare la libreria GAS (sono lo sviluppatore principale lì) che ha uno plugin for tracking Vimeo Video.

avvertimento sulla compatibilità

nota l'avviso relativo alla compatibilità, credo che se si inserisce il lettore utilizzando il metodo del flash è possibile ottenere una gamma più ampia di browser supportati, ma uccidere completamente il lettore per dispositivi iOS:

Con il codice di codifica universale, l'unico modo per interagire con il lettore è utilizzando window.postMessage. postMessage è uno sviluppo relativamente nuovo , quindi è disponibile solo in Internet Explorer 8+, Firefox 3+, Safari 4+, Chrome e Opera 9+.

+0

Sembra un sacco di soluzioni alternative solo per prendere un video "giocare". Grazie per l'aiuto qui, molto utile. – Brett

+0

Ho funzionato per il mio sito sul palco e negli ambienti di sviluppo, ma non sembra funzionare sulla produzione. Il sito di produzione è in https, pensa che questa potrebbe essere la ragione? – SirM