2010-10-07 5 views
4

Mon numéro est le suivant:Essayer de suivre le nombre de clics dans les courriels de l'utilisateur

J'essaye de compter le nombre de clics sur les annonces dans notre bulletin. La chose est que je ne peux pas inclure js dans les emails - c'est compréhensible. Donc, j'ai trouvé un moyen de contourner cela en écrivant ce petit morceau de code:

<script type="text/javascript" src="http://www.factmag.com/wp-content/themes/modularity_/js/jquery-1.3.2.min.js"></script> 

<script type="text/javascript"> 

    function getUrlVars() 
    { 
     var vars = [], hash; 
     var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
     for(var i = 0; i < hashes.length; i++) 
     { 
      hash = hashes[i].split('='); 

      if($.inArray(hash[0], vars)>-1) 
      { 
       vars[hash[0]]+=","+hash[1]; 
      } 
      else 
      { 
       vars.push(hash[0]); 
       vars[hash[0]] = hash[1]; 
      } 
     } 

     return vars; 
    } 

       function redirect() 
       { 
        var link = getUrlVars()["page_url"]; 
        setTimeout('document.location = "' + link + '"', 100) 
       } 
</script> 
<body onload="javascript:redirect();"></body> 


<script type="text/javascript"> 

var _gaq = _gaq || []; 
_gaq.push(['_setAccount', 'UA-4340871-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> 

Il est hébergé sur nos serveurs et dans le bulletin du code d'annonce a le format suivant:

<a href="http://www.example.com/example_ad_counter/?utm_source=banner6&utm_medium=banner&utm_campaign=banner&page_url=ad_url"><img src="ad_img_url" style="border:1px solid #000;"></a> 

donc ce que je veux À faire ici:

  1. L'utilisateur clique sur annonce dans l'email.
  2. Il va à la page avec ce script.
  3. Google Analytics compte le nombre dont il a besoin pour le suivre.
  4. Le script redirige l'utilisateur vers la page de l'annonceur.

Maintenant, voici l'affaire - Google Analytics ne fait pas le compte ici. Ma conjecture est que je dois ajouter quelque chose dans google js afin de le faire, mais je n'ai aucune idée de quoi. Quelqu'un pourrait m'aider avec celui-ci? Merci.

+0

C'est intéressant. Google est toujours mesurer ces variables, je pense. – fabrik

+1

essayez de changer 'ga.async = true;' à 'ga.async = false;' – Brendon

+0

@Brendon qui n'aura aucun effet. ga.async n'est pas observé dans les navigateurs qui ne le supportent pas; ils l'ignorent juste. C'est seulement observé dans les versions très récentes de Firefox. Ce qui le rend async est la méthode d'intégration de la balise script. Vous avez raison de penser que c'est un problème synchrone, cependant; C'est un problème de condition de course. – Yahel

Répondre

1

Vous voulez vous assurer que votre redirection est appelée après l'appel du code de google. Actuellement, vous l'avez en cours sur onLoad. yC est correct dans son commentaire à la question que c'est probablement une condition de concurrence, mais en poussant votre setTimeout ne sera pas complètement résoudre cette condition de course.

Vous pouvez essayer d'appeler votre fonction de redirection une fois que google s'est inséré dans la page.

Le code ici:

(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); 
})(); 

... est google littéralement l'ajout d'une nouvelle balise script à votre page, puis en chargeant l'URL d'analyse en elle. Brendon avait raison de suggérer de désactiver async, mais alors je suggérerais d'ajouter votre appel de redirection après la ligne var s = document (dans la fonction), et j'espère que cela donnera assez de temps à google pour faire son sale boulot et avant de rediriger.

Si cela ne fonctionne pas, alors suivez la suggestion de yC et repoussez le délai d'expiration. Sachez simplement que le délai de redirection est en train de s'accélérer avec le temps nécessaire au chargement du script de google, puis à son exécution, ce qui n'est pas prévisible. Je mettrais probablement ce setTimeout au même endroit, j'ai recommandé d'appeler la fonction de redirection directement. Cela signifie qu'il ne commencera même pas à compter le délai avant que le script Google Analytics ait été ajouté à la page.

Questions connexes