Google分析事件跟踪无法反馈?

时间:2012-10-01 10:44:54

标签: javascript jquery google-analytics query-string

在以下代码中,我试图: -

  • 在页面上定义Google Analytics(分析)
  • 如果页面中包含某个查询字符串和字符
  • ,则添加jquery单击事件
  • 点击事件会调用Google Analytics跟踪事件
  • 我还要对域中的查询字符串和值进行代码检查

什么不起作用: -

  • 第三项,即调用谷歌分析跟踪事件,我似乎正在点击它,但没有任何东西被返回到我的GA帐户。

我尝试过: -

  • 我已经三次检查_gaq_.push的信息是否正确链接到正确的帐户。
  • 使用firebug和IE9开发人员工具来关注javascript并分析正在发生的事情。这就是我知道当我的情景属实时我正在进行事件跟踪的方式。
  • 在像jsfiddle这样的孤立环境中尝试,不会给它链接,因为我实际上无法提供公司信息。它在js小提琴中不起作用。 (主要是因为jsfiddle无法通过我的ga帐户进行身份验证(域名不同)。
  • 我在相关域内的隔离文件中试过但仍然没有运气。

    var _gaq = _gaq || [];
    _gaq.push(['_setAccount', 'UA-XXXXX-X']);
    _gaq.push(['_setDomainName', 'mydomain.co.uk']);
    _gaq.push(['_setAllowLinker', true]);
    _gaq.push(['_setSiteSpeedSampleRate', 100]); // this is a new line, allowing us to see how fast all pages load
    _gaq.push(['_trackPageview']); // we’ve moved this line down, as ‘setdomain’ (etc) should appear before it
    
    (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);
    })();
    
    $(document).ready(function () {
        var querystring = (function (a) {
            if (a == "") return {};
            var b = {};
            for (var i = 0; i < a.length; ++i) {
                var p = a[i].split('=');
                if (p.length != 2) continue;
                b[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
            }
            return b;
        })(window.location.search.substr(1).split('&'));
        if (querystring["utm_expid"] != null) {
            $('a').click(function () {
                if ($(this).attr("href") != 'undefined' && $(this).attr("href") != null) {
                    if ($(this).attr("href").toLowerCase().indexOf("keyword") >= 0 && $(this).attr("href").toLowerCase().indexOf("keyword2") >= 0) {
                        _gaq.push(['_trackEvent', 'eventCategories', 'eventAction', 'eventLabel']);
                    } else if (($(this).attr("href").toLowerCase().indexOf("keyword") >= 0 && $(this).attr("href").toLowerCase().indexOf("keyword2") >= 0 && $(this).attr("href").toLowerCase().indexOf("keyword3") >= 0) || ($(this).attr("href").toLowerCase().indexOf("keyword4") >= 0)) {
                        _gaq.push(['_trackEvent', 'eventCategories', 'eventAction', 'eventLabel']);
                    }
                }
            });
        }
    });
    

1 个答案:

答案 0 :(得分:3)

Google Analytics _trackEvent(以及_trackPageview等)通过从分析服务器发出跟踪像素请求来工作。如果点击导致在跟踪请求完成之前将新页面加载到同一窗口,则最终可能会丢失数据,或者只跟踪某些数据。

以下代码在跟踪链接之前会稍微延迟:

var delayLink = function(e, url) {
  e.preventDefault();
  setTimeout(function(){location.href = url}, 150);
};

if (querystring["utm_expid"] != null) {
    $('a').click(function (e) {
        if ($(this).attr("href") != 'undefined' && $(this).attr("href") != null) {
            if ($(this).attr("href").toLowerCase().indexOf("keyword") >= 0 && $(this).attr("href").toLowerCase().indexOf("keyword2") >= 0) {
                _gaq.push(['_trackEvent', 'eventCategories', 'eventAction', 'eventLabel']);
                if (this.target != '_blank') delayLink(e, this.href);
            } else if (($(this).attr("href").toLowerCase().indexOf("keyword") >= 0 && $(this).attr("href").toLowerCase().indexOf("keyword2") >= 0 && $(this).attr("href").toLowerCase().indexOf("keyword3") >= 0) || ($(this).attr("href").toLowerCase().indexOf("keyword4") >= 0)) {
                _gaq.push(['_trackEvent', 'eventCategories', 'eventAction', 'eventLabel']);
            if (this.target != '_blank') delayLink(e, this.href);
            }
    }
    });
}