web-dev-qa-db-fra.com

Est-il possible de mettre du code Google Analytics dans un fichier JS externe?

var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));

try 
{
    var pageTracker = _gat._getTracker("UA-XXXXXXX-1");
    pageTracker._trackPageview();
}
catch(err) {}

Serait-il possible d'appeler ce script à partir d'un fichier JS externe? Je voulais faire quelque chose comme:

<script type="text/javascript" src="googleanalytics.js" ></script>

et mettez-en un sur chacune de mes pages HTML.
Le code que j'ai ci-dessus sera à l'intérieur googleanalytics.js
Les instructions de Google étaient de mettre le code sur chaque page. Le problème, c’est qu’il est plus difficile de changer le code de suivi. (Nous utilisons différents codes de suivi pour nos pages DEV et PROD).
Je l'ai essayé et cela ne semble pas fonctionner.
Quelque chose ne va pas avec ça? Ou y a-t-il autre chose qui cause le problème?

Important FYI Veuillez noter que nous utilisons IE6 et 8 navigateurs (oui, je sais, pas besoin de me le dire)

28
Nikko

Oui c'est possible. Si cela ne fonctionne pas, il se passe autre chose.

Juste une pensée, Google Analytics a généralement environ un jour de retard dans la création de rapports. Par conséquent, lorsque vous apportez des modifications, il faut un certain temps avant de savoir que cela fonctionne. Ce que j'aime faire, c'est cliquer sur une page qui ne génère pas beaucoup de trafic pour m'assurer que le suivi est correctement configuré.

Vous pouvez également essayer de faire du lien un lien absolu dans votre balise <script. Il se peut que le code d'analyse se trouve au mauvais endroit.

14
Jason

Ne pouvez-vous pas utiliser votre langage côté serveur pour sortir le code au bas de chaque page? Avoir une fonction telle que output_ga () et appeler cela. De cette façon, vous pouvez le changer au même endroit.

4
Draemon

Je suis tombé sur ce post en essayant de résoudre un problème similaire. Après avoir cherché plus loin, je suis tombé sur un autre poste qui a fonctionné pour moi:

Utilisation du code asynchrone Google Analytics à partir d'un fichier JS externe

Je devais déplacer var_gaq en dehors de la fonction dans laquelle il était pour qu'il devienne global.

J'espère que cela t'aides!

3
Airn5475

Cela fonctionnera si vous divisez le script en 2 scripts de la même manière que Google Analytics a divisé le script traditionnel en 2 balises de script.

1
Mattis Kopstad

j'ai un moyen facile de le faire ... Puisque Js analytique est asynchrone, cela ne posera aucun problème ...

inclure le code ci-dessous dans n'importe quel fichier js (veuillez noter que le code utilisé est le nouveau code d'analyse fourni par google analytics)

var imported = document.createElement('script');
imported.src = 'https://www.googletagmanager.com/gtag/js?id=UA-12xxxxxxx-1';
document.head.appendChild(imported);


window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.Push(arguments);}
gtag('js', new Date());

gtag('config', 'UA-12xxxxxxx-1');
1
Ramanpreet Singh

Envelopper le code google dans la fonction et exécuter sur chaque page;)

0
usoban

@ Nikko

Une des raisons possibles est que le compte GA a été créé à l'aide de l'ancienne analyse. Vous devez donc utiliser le code d'analyse traditionnel ga.js (_gaq.Push). J'ai trouvé une incompatibilité dans l'utilisation du nouvel analytics.js avec le compte traditionnel GA du site Web GA. Les hits n'apparaissent pas et j'ai donc été obligé d'utiliser les ga.js. traditionnels.

Vous pouvez également définir une fonction de rappel pour vous assurer que les hits sont correctement envoyés, comme ci-dessous:

//traditional way
_gaq.Push(['_set', 'hitCallback', function() {
  console.log("%c ga.js finished sending pageview data to analytics %s ", "color:black; background: pink", pageviewUrl);
}]);

//new analytics way
ga('send', 'pageview', {
            'page': pageviewUrl,
            'hitCallback': function() {
                console.log("%c analytics.js done sending data. pageview url = %s ", "color: black, background: pink", pageviewUrl);
            }
        });

où pageviewUrl = l'URL du site

J'espère que cela pourra aider!

0
Carmela