32

我正在尝试将 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);

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

<script type="text/javascript" src="js/google-analytics.js" ></script>

但是,显然有一个问题,因为几天后,我没有通过统计数据!

有什么想法我需要改变吗?

谢谢,尼尔


编辑:好的......在下面的一些反馈之后,我将添加我的 .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();
4

3 回答 3

25

您的变量定义var _gaq在函数内部。这意味着它在该函数内部是局部范围的,不会全局存在。Google Analytics 依赖于全局变量_gaq。如果您想将其保存在这样的函数中,请将其引用为window._gaq.

于 2010-07-17T03:59:43.897 回答
14

您完全错过了异步跟踪代码的要点。不要将它放在外部文件中,因为这与包含旧的同步 GA 完全一样。

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

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

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

于 2010-07-16T10:28:25.397 回答
1

老实说,我没有通读所有这些帖子,因为它们已经相当老了。但是,我最近需要将 Gtag(用于分析跟踪的谷歌标签管理器)添加到一个包含 1000 个静态 HTML 文件的旧网站,并且(幸运的是)html 文件有一个用于 spry 菜单栏的包含 js 文件,比如我说很老的网站!出于我的目的,我并不担心性能,而是测量流量以便我们可以迁移它。您的情况可能有所不同,但以下代码适用于 Gtag 的外部 js 包括。

我使用这个文件来加载下面的代码,因为上面的代码是用于遗留 ga.js

//Added Google Anyltics Tag Container Tracking - included here to min rebuilding DOM 

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

    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-XXXXXXXXX-1');
//Confirmed with Google tag Assistant
于 2018-04-08T17:15:19.707 回答