web-dev-qa-db-fr.com

Suivi d'une page iframe hébergée sur un autre domaine avec Google Analytics

J'ai suivi les instructions de Google sur le suivi du contenu iframed sur un autre domaine ( http://code.google.com/apis/analytics/docs/tracking/gaTrackingSite.html#trackingIFrames ) du mieux que je peux, Pourtant, aucune donnée n'apparaît dans Analytics pour la page iframed.

Page parent ( http://www.blackangus.com/primeclub/ ):

<script type="text/javascript">
    var _gaq = _gaq || [];
    _gaq.Push(['_setAccount', 'UA-xxxxxxx-xx']);
    _gaq.Push(['_setDomainName', 'blackangus.com']);
    _gaq.Push(['_setAllowLinker', true]); 
    _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);
    })();


    var iframeLink = "http://www.fishbowl.com/clt/blckangus/lp/join/joinform.asp";
    jQuery(function() {
        _gaq.Push(function() {
            var pageTracker = _gat._getTrackerByName();
            iframeLink = pageTracker._getLinkerUrl(iframeLink);
            jQuery("#joinform").attr("src", iframeLink);
        });
    });
</script>

Et la page iframed ( http://www.fishbowl.com/clt/blckangus/lp/join/joinform.asp ):

<script type="text/javascript">
    var _gaq = _gaq || []; 
    _gaq.Push(['_setAccount', 'UA-xxxxxx-xx']); 
    _gaq.Push(['_setDomainName', 'blackangus.com']); 
    _gaq.Push(['_setAllowHash', 'false']); 
    _gaq.Push(['_setAllowLinker', true]); 
    _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> 

Qu'est-ce que je fais mal? Pourquoi la page iframed n'apparaît-elle pas dans Analytics?

5
chrisofspades

Intéressant. Vos scripts semblent faire trois choses:

  1. Ajoutez l'extrait GA à la page non-iframe et exécutez le pagetracker
  2. Ajoutez une insertion de code louche sur gaq.Push
  3. Ajoutez l'extrait GA à la page d'iframe et exécutez le pagetracker

Ce dont vous avez besoin pour le non-iframe est essentiellement ceci:

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.Push(['_setAccount', 'UA-XYZXYZ-XY']);
_gaq.Push(['_setDomainName', 'blackangus.com']);
_gaq.Push(['_setAllowHash', 'false']);
_gaq.Push(['_setAllowLinker', true]);
_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);
})();

et exactement la même chose sur votre page iframe (puisqu'elle ne se trouve pas sur blackangus.com):

<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.Push(['_setAccount', 'UA-XYZXYZ-XY']);
_gaq.Push(['_setDomainName', 'blackangus.com']);
_gaq.Push(['_setAllowHash', 'false']);
_gaq.Push(['_setAllowLinker', true]);
_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);
})();

Toutefois, cela comptera pour deux pages vues dans votre configuration GA, car l’iframe déclenchera également une consultation de page. Vous devez configurer un filtre qui filtre les doubles pages vues.

Et oui, vous devez attendre quelques heures jusqu'à ce que les premiers résultats soient affichés. Généralement autour de 24 heures.

2
David K.