防止jQuery拦截ga.push

时间:2014-01-27 16:42:48

标签: javascript jquery google-analytics google-analytics-api

我使用Google Analytics跟踪自定义事件,但如何防止jQuery事件处理程序拦截GA事件?

内联符号工作正常:

<body onclick="_gaq.push(['_trackEvent', 'Demo', 'Click'])">

当我将这段代码移动到单独的JavaScript文件并使用jQuery时 - 它失败了:

$('body').on('click', function() {
    _gaq.push(['_trackEvent', 'Demo', 'Click']); // Does not do anything
    console.log(_gaq); // This normally prints out content of GA
    //return true;
});

思想?

更新:如果我尝试从单独的JavaScript代码处理事件但没有jQuery,Tracker也可以正常工作。

window.onload = function() {
    document.body.onclick = function() {
        _gaq.push(['_trackEvent', 'Demo', 'Click']); // This event is getting fired
        console.log(_gaq);
        //return true;
    }
}

jQuery有什么问题?

1 个答案:

答案 0 :(得分:0)

同时又有趣又怪异。我似乎偶然在document.ready事件上覆盖了GA。

  1. 奇怪的是,我检查了GA是否已经初始化,但它似乎不起作用或使用了一些异步初始化......
  2. 有趣的是,它足以在jQuery OnReady事件之外移动GA的初始化,以使一切正常。
  3. 是(错误的):

    $(document).ready(function() {
        var _gaq = _gaq || [];
        // ... Some event handling
    

    现在(正确):

    var _gaq = _gaq || [];
    $(document).ready(function() {
        // ... some event handling
    

    我不知道如何解释这一点,但这解决了我的问题...已关闭。