【问题标题】:Defer loading of Google Analytics Javascript Code and hosting analytics.js on own Server延迟加载 Google Analytics Javascript 代码并在自己的服务器上托管 analytics.js
【发布时间】:2014-12-08 08:17:39
【问题描述】:

以下代码是 Google 推荐的。我将代码放在我的 footer.php 中 </body> 标记之前(靠近文件底部)以推迟调用 defer-loading.js 并加载我自己托管的 analytics.js 代码(myga.js 文件)。

这段代码说等待整个文档加载,然后加载外部文件“defer-loading.js”

<script type="text/javascript">
function downloadJSAtOnload() {
var element = document.createElement("script");
element.src = "/defer-loading.js";
document.body.appendChild(element);
}
if (window.addEventListener)
window.addEventListener("load", downloadJSAtOnload, false);
else if (window.attachEvent)
window.attachEvent("onload", downloadJSAtOnload);
else window.onload = downloadJSAtOnload;
</script>

在 defer-loading.js 文件中,我放置了以下 NEW Google Analytics 跟踪代码 - 也称为 Universal Analytics:(我为这个问题替换了我的 ID 号和域名)

(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','http://mydomainname.com/myga.js','ga');

ga('create', 'Uxxx-xx-xxx', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');

附加说明:为了更新 myga.js (analytics.js) 代码,我在我的服务器上使用了每日 cron。它从 Google 下载 analytics.js 并替换我服务器上的旧文件。这部分工作正常。 Here you can find the tutorial - How do we update the script

很遗憾,我的 defer-loading.js 文件中的 新 Google 通用跟踪代码不跟踪访问!

为了找到错误,我在 defer-loading.js 中使用了以下 OLD Google Analytics 跟踪代码,它工作正常:

var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'Uxxx-xx-xxx']);
_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') + '.mydomainname.com/myga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();

使用 firebug,我意识到以下文件 (1px/1px) 仅加载 OLD(工作)Google Analytics 代码版本。 NEW 代码不会加载此文件 - 但其他一切似乎都正常。

http://www.google-analytics.com/r/__utm.gif?................

知道为什么 NEW Google Analytics(分析)通用跟踪代码不起作用吗?

【问题讨论】:

    标签: java performance google-analytics


    【解决方案1】:

    解决办法如下:

    https://github.com/danielstjules/defer-analytics

    (function(i, s, o, g, r, a, m) {
        i['GoogleAnalyticsObject'] = r;
        i[r] = i[r] || function() {
            (i[r].q = i[r].q || []).push(arguments)
        }, i[r].l = 1 * new Date();
        i.initAnalytics = function() {
            a = s.createElement(o), m = s.getElementsByTagName(o)[0];
            a.async = 1;
            a.src = g;
            m.parentNode.insertBefore(a, m)
        }
    })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga');
    ga('create', 'UA-000000-0');
    ga('send', 'pageview');
    
    function atOnload() {
        initAnalytics();
    }
    if (window.addEventListener) window.addEventListener("load", atOnload, false);
    else if (window.attachEvent) window.attachEvent("onload", atOnload);
    else window.onload = atOnload;
    

    【讨论】:

    • 如果你不喜欢使用冗长的变量名,至少添加一个关于 isogram 变量是什么的评论。
    • 啊,是的.. 一年前还不知道。请原谅我。
    猜你喜欢
    • 2015-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-22
    • 1970-01-01
    • 1970-01-01
    • 2018-03-17
    相关资源
    最近更新 更多