31
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 中
Google 的说明是将代码放在每个页面中。这样做的问题是更改跟踪代码变得更加困难。(我们对 DEV 和 PROD 页面使用不同的跟踪代码)。
我已经尝试过了,它似乎不起作用。
这样做有什么问题吗?还是有其他原因导致问题?

重要仅供参考 请注意我们使用的是 IE6 和 8 浏览器(是的,我知道,无需告诉我)

4

8 回答 8

17

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

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

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

于 2009-07-15T12:37:12.110 回答
4

你能不能不用你的服务器端语言来输出每页底部的代码?有一个函数,比如 output_ga() 并调用它。这样你就可以在一个地方改变它。

于 2009-07-15T12:35:15.090 回答
3

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

使用来自外部 JS 文件的 Google Analytics 异步代码

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

希望这可以帮助!

于 2011-07-07T18:19:37.800 回答
3

我有一个简单的方法来做到这一点......由于分析js是异步的,它不会给任何问题......

在任何 js 文件中包含以下代码(请注意:我使用的代码是谷歌分析提供的新分析代码)

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');

于 2018-08-24T02:14:41.500 回答
2

如果您将脚本分成 2 个脚本,就像 Google Analytics 将传统脚本分成 2 个脚本标签一样,这将起作用。

于 2011-04-16T21:07:55.143 回答
1

动态上传谷歌分析:

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');

不要忘记将 XXXXXX-XX 替换为您的帐户 ID。

于 2019-05-16T12:15:36.623 回答
0

将谷歌代码包装成函数并在每个页面上执行;)

于 2009-07-15T12:32:22.810 回答
0

@日光

一个可能的原因是因为 GA 帐户是使用旧分析创建的。所以你必须使用传统的分析代码 ga.js (_gaq.push)。我发现在 GA 网站中使用新的 analytics.js 与传统 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 = 网站的网址

希望有帮助!

于 2014-03-31T04:01:26.463 回答