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

Nei*_*ilD 30 javascript asynchronous google-analytics unobtrusive-javascript

我正在尝试将异步版Google Analytics跟踪代码添加到网站中.

我想将JavaScript保存在一个单独的文件中,并从那里调用它.

这是我目前在.js文件中得到的内容:

function addLoadEvent(func) {
    var oldonload = window.onload;
    if (typeof window.onload != 'function') {
        window.onload = func;
    } else {
        window.onload = function() {
            oldonload();
            func();
        }
    }
}

function loadtracking() {
    var _gaq = _gaq || [];
        _gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
        _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);
        })();
}

addLoadEvent(loadtracking);
Run Code Online (Sandbox Code Playgroud)

这就是我在<head>母版页面标签中的内容:

<script type="text/javascript" src="js/google-analytics.js" ></script>
Run Code Online (Sandbox Code Playgroud)

然而,显然有一个问题,因为几天后,我没有得到统计数据!

我需要改变什么想法?

谢谢,尼尔


编辑:好的...在下面的一些反馈之后,我将添加我的.js文件的新的当前内容.我会保持更新,以便如果/当这个问题得到解决,它将有希望帮助其他人尝试做类似的事情.

var _gaq = _gaq || [];

function loadtracking() {
        window._gaq.push(['_setAccount', 'UA-XXXXXXX-X']);
        window._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);
        })();
}

loadtracking();
Run Code Online (Sandbox Code Playgroud)

Bri*_*ian 23

您的变量定义var _gaq在函数内部.这意味着它在该函数内局部作用域并且不会全局存在.Google Analytics取决于全局变量_gaq.如果你想将它保存在这样的函数中,请将其引用为window._gaq.

  • **谢谢你**我在我的功能之外移动了var _gaq它立即工作了! (3认同)

gbl*_*zex 14

你完全忽略了异步跟踪代码的重点.不要把它放在外部文件中,因为这与包含旧的同步GA完全一样.

最重要的是,不要将跟踪代码推迟,window.onload因为它可能会触发太晚.

如果您使用异步GA,只需将其放在内联脚本标记中的文档顶部.这也是Google Analytics网站上的推荐.

在您的页面或模板可能使用的任何其他脚本之后,将异步代码段插入页面部分底部<head>.

  • 使用异步跟踪的最大好处是,您可以在加载代码之前开始将事件推送到GA中.只要您的页面可以开始将元素推入_gaq数组,您就可以开始存储事件.相反,当您在主脚本之外强制执行变量时,您将强制跟踪等待外部脚本下载之后.这就是它与旧脚本完全一样的原因. (3认同)