【问题标题】:Using Ajax with Google Analytics将 Ajax 与 Google Analytics 结合使用
【发布时间】:2011-05-13 07:54:46
【问题描述】:

我正在创建一个站点,其中主要内容由 Ajax 调用更改,并且我想添加 Google Analytics 代码(使用 async _gaq 方法)。 我知道我需要将带有 URI 的 _trackPageview 事件推送到 _gaq。有两种方法可以做到这一点:

1) 在我的链接和表单上使用 onclick 属性(或使用 JQuery 绑定事件),例如:onlink="_gaq.push(....)"

2) 由于我的 ajax 代码在接收来自 ajax 请求的数据时可以处理脚本,所以我可以在提供 ajax 页面时在这样的脚本 sn-p 中添加 _gaq.push(...) 调用。

使用第一个选项,我猜会产生更简洁的代码。但是,缺点是我必须记住在所有链接和表单中放入分析代码,如果我在带有 JS 验证的表单上使用它,即使验证失败,点击也会被 GA 分析。

第二个选项看起来不太干净,但解决了上述问题。我可以有一个 GA 代码,它只检查我们是在提供 ajax 还是普通页面,并相应地输出一个 JS sn-p。此外,只有在真正提交表单时才会记录表单提交。

我将不胜感激对此的任何想法或 cmet。或许还有更多考虑因素或方法可以做到这一点?

谢谢 亚龙

【问题讨论】:

    标签: javascript ajax google-analytics


    【解决方案1】:

    如果您使用 jQuery,有一些更聪明的方法可以做到这一点。

    一种可能性是绑定到事件ajaxSuccess

    $(document).ajaxSuccess(function(e, xhr, opt){
      _gaq.push(['_trackPageview', opt.url]);
    });
    

    然后从那里开始,所有 jQuery ajax 调用都将触发此事件,并将您通过 Ajax 请求的 url 推送到 _gaq

    请记住,它将完全按照您的请求推送网址。所以如果你打电话:

    $.ajax('http://www.mydomain.com/path')
    

    http://www.mydomain.com/path 将被推送到 _gaq。可能这不是你想要的。所以最好像这样调用.ajax

    $.ajax('/path');
    

    现在只有/path 被推送到_gaq。

    如果您确实需要使用整个域,最好在将 URL 推送到 Google Analytics 之前对其进行清理。

    【讨论】:

    • 感谢 Eduardo,我喜欢这个想法,需要进一步考虑。我能看到的唯一缺点是,如果某些 ajax 调用不打算发送到分析,我将需要一些额外的逻辑。但我想这是可行的。
    【解决方案2】:

    我将此作为新答案发布,因为它是一种不同的方法。

    如果您不想绑定到全局事件 ajaxSucess,可以使用 deferreds 手动完成。

    $.ajax('/page').done(function(){
      _gaq.push(['_trackPageview', '/page']);
    }).done(function(response){
      // Do something with the response
    });
    

    不好的是 done 回调没有收到 url。因此,您将输入两次网址。由于您可能会执行几次,因此创建一个辅助函数可能会很方便:

    function GaAjax(url){
      return (function(u){
        return $.ajax(u).done(function(){
          _gaq.push(['_trackPageview', u]);
        });
      })(url);
    }
    

    现在,当您执行应发送到 Google Analytics 的 Ajax 请求时,您可以调用它而不是 jQuery .ajax

    GaAjax('/page').done(function(){
      // Do something with the response
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多