是否可以将Google Analytics代码放在外部JS文件中?

时间:2009-07-15 12:24:40

标签: javascript google-analytics

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) {}

是否可以从外部JS文件调用此脚本?我想做类似的事情:

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

并将其中一个放在我的每个HTML页面上 我上面的代码将在googleanalytics.js中 谷歌的指示是将代码放在每个页面中。问题在于它使得更改跟踪代码变得更加困难。 (我们为DEV和PROD页面使用不同的跟踪代码) 我已经试过了,它似乎没有用。
这样做有什么问题吗?或者是否有其他原因导致问题?

重要的FYI 请注意,我们使用的是IE6和8浏览器(是的,我知道,不需要告诉我)

8 个答案:

答案 0 :(得分:14)

是的,这是可能的。如果它不起作用,那么还有其他事情发生。

只是想一想,Google Analytics通常会在报告方面落后一天,因此当您进行更改时,您需要一些时间才能知道它正在运行。我喜欢做的是点击一个不经常获得流量的页面,以向我保证我的跟踪设置正确。

此外,您可以尝试将链接设为<script标记中的绝对链接。它可能只是在寻找分析代码的错误位置。

答案 1 :(得分:4)

您是否可以使用服务器端语言输出每页底部的代码?有一个诸如output_ga()之类的函数并调用它。这样你就可以在一个地方改变它。

答案 2 :(得分:3)

我在尝试解决类似问题时遇到过这篇文章。在进一步搜索之后,我遇到了另一篇对我有用的帖子:

Using Google Analytics asynchronous code from external JS file

我不得不将var _gaq移到它所在的函数之外,以便它变得全局。

希望这有帮助!

答案 3 :(得分:1)

如果您将脚本划分为2个脚本,就像Google Analytics将传统脚本划分为2个脚本标记一样。

答案 4 :(得分:1)

我有一个简单的方法来做... 由于解析js是异步的,因此不会有任何问题...

在任何js文件中包含以下代码 (请注意:我使用的代码是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');

答案 5 :(得分:0)

将Google代码包装到函数中并在每个页面上执行;)

答案 6 :(得分:0)

@Nikko

一个可能的原因是因为GA帐户是使用旧分析创建的。因此,您必须使用传统的分析代码ga.js(_gaq.push)。我发现使用新的analytics.js与GA网站中的传统GA帐户不兼容。点击不会出现所以我被迫使用传统的ga.js。

此外,您可以设置回调函数以确保成功发送命中,如下所示:

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

其中pageviewUrl =网站的网址

希望有所帮助!

答案 7 :(得分:0)

动态上传Google Analytics(分析):

function loadGoogleAnalytics(){
    var ga = document.createElement('script'); 
    ga.type = 'text/javascript'; 
    ga.async = true;
    ga.src = 'https://www.googletagmanager.com/gtag/js?id=UA-XXXXXX-XX';

    var s = document.getElementsByTagName('script')[0];
    s.parentNode.insertBefore(ga, s);
}

loadGoogleAnalytics(); //Create the script  

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

gtag('config', 'UA-XXXXXX-XX');

别忘了用您的帐户ID替换XXXXXX-XX。