javascript - Google 分析代码在一个页面中多次包含

标签 javascript jsp

我有一个企业交易网站。我已将 Google 分析的 代码包含在我网站的每个 jsp 中。现在的问题是,在我的网站中,某些页面包含在其他页面中,而不是仅通过 ajax 调用和更改 div 内容使用框架。因此,当在同一页面中加载新页面时,不会调用 Google Analytic,因为整个页面未加载,并且浏览器仅考虑页面加载来加载 js,而不是框架更改。任何人都可以为此提出解决方案

最佳答案

最简单的解决方案是使用全局变量,如下所示:

if (! window.googleAnalytics) {
    window.googleAnalytics = true;
    // ga code here ...
}

更好的替代方法是:

当我在网站上添加Google Analytics时,我编写了一个小js文件,名为google-analytics.js,内容如下:

function GoogleAnalytics(accountId, productionServerUrl) {
    var _gaq = window._gaq = window._gaq || [];

    if (window.googleAnalytics) {
        throw new Error("GoogleAnalytics tools already created!");
    }
    window.googleAnalytics = this;

    this.accountId = accountId;
    this.dummy = (window.location.hostname != productionServerUrl);

    // Work's only on production server and ignore sandboxes
    if (this.dummy) {
        return ;
    }

    _gaq.push(['_setAccount', this.accountId]);
    _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';
        ga.onload = function() {
            //console.log("GA Loaded !!!!", this, arguments);
            window.googleAnalytics.getTracker();
        };
        var s = document.getElementsByTagName('script')[0]; 
        s.parentNode.insertBefore(ga, s);
    })();
}

GoogleAnalytics.prototype.getTracker = function () {
    if (this.dummy) {
        return null;
    }
    if (undefined == this.pageTracker) {
        if (window._gat == undefined) {
            console.error("! Google Analytics script is not loaded !");
            return null;
        }
        this.pageTracker = window._gat._getTracker(this.accountId);
    }
    return this.pageTracker;
}

GoogleAnalytics.prototype.track = function () {
    if (this.dummy) {
        console.log(" >> GoogleAnalytics.track()", window.location.href, this, arguments);
    }
    if (this.dummy) {
        return ;
    }
    var tracker = this.getTracker();
    if (null == tracker) {
        return;
    }
    tracker._trackPageview();
}

if (undefined == window.googleAnalytics) {
    window.googleAnalytics = new GoogleAnalytics('UA-XXXXXXXX-X', 'yoursite.ru');
}

该脚本必须在 jQuery.js 加载后加载。 在构造函数的参数中插入您的 GA-ID 和站点 URL。 在 AJAX 页面加载和 url 更改后,您可以调用 window.googleAnalytics.track()。 祝你好运!

关于javascript - Google 分析代码在一个页面中多次包含,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17079765/

相关文章:

javascript - 验证并链接到另一个页面

javascript - 在服务器端的 react-router 中使用 basename

javascript - 是否可以通过单击 html 复选框将文本添加到 php 变量

java - 如何使用 Struts2 提交带有文件和文本字段的多部分/表单数据?

java - 列表迭代 - 用户选择传递给 servlet 的值

javascript - 无法使用 stopPropagation() 停止点击传播

javascript - Ajax 请求未传递给 Controller

jquery - 使用ajax json加载数据后Bootstrap数据表不起作用

java - 在谷歌应用引擎 (Jetty) 中禁用 taglib 扫描

javascript - 激活选项卡面板中的选项卡而不访问它 extjs4.2