【问题标题】:How to track anchor tags with Google Analytics如何使用 Google Analytics 跟踪锚标记
【发布时间】:2009-07-31 09:17:52
【问题描述】:

我正在尝试通过 Google Analytics(分析)跟踪不会导致新请求的点击。具体来说,点击通过jQuery UI tabs widget 创建的选项卡。我正在使用旧版本的代码('urchin tracker')并尝试像这样记录点击:

$('.ui-tabs-nav li a').click(function() {
    val = "/tab/" + $(this).attr('href');

    // when uncommented, the following line reports, for example:
    //   /tab/#main
    // as expected.
    // console.log(val);

    res = urchinTracker(val);
});

在另一种情况下,同样的方法也有效,据我所知,唯一的显着区别是字符串中缺少井号 (#) 符号。 urchinTracker() 跟踪的字符串中是否不允许该字符,或者可能有其他原因(除了没有人点击链接!)?

【问题讨论】:

    标签: google-analytics anchor urchin


    【解决方案1】:

    默认情况下,Google Analytics 会禁用 tracking anchor tags。要为旧版跟踪代码启用它,请使用以下表单:

    _uanchor = 1;
    urchinTracker(val);
    

    设置变量_uanchor的值相当于在使用最新的GA代码库时调用方法_setAllowAnchor。 (您可以在 Google Analytics Tracking Code Migration Guide 中找到详细的比较 - 此链接已过时)。

    _setAllowAnchor 方法在Google Reference Site 上有描述。

    【讨论】:

    • 除非我遗漏了什么,否则这是完全错误的。此技术仅适用于登录页面(通常是广告系列跟踪),不适用于页内锚定链接。
    • 现在(2013 年 5 月)这很可能是处理它的方法:stackoverflow.com/a/6756202/565110
    • 这个答案确实不正确,不应该被接受。 _setAllowAnchor 使 GA 将 # 符号解释为活动 URL 参数的分隔符,而不是 ? 字符。来自文档:“如果您将此选项设置为 true,则您的广告系列跟踪 URL 可以使用井号 (#) 而不是问号 (?) 来指示查询字符串的开头。”同样,这与跟踪其src 指向页内锚点的链接的点击无关。
    【解决方案2】:

    简而言之,Google Analytics(分析)无法跟踪包含“#”字符的页面链接。点击 index.html#foo 被视为点击 index.html,忽略“#”之后的所有内容。

    您可以考虑转义“#”字符:

    $('.ui-tabs-nav li a').click(function() {
        val = new String("/tab/" + $(this).attr('href')).replace('#', '&');
    
        // when uncommented, the following line reports, for example:
        //   /tab/#main
        // as expected.
        // console.log(val);
    
        res = urchinTracker(val);
    });
    

    在您的示例中,这将记录 /tab/?main 的页面视图,这应该可以与 Google Analytics 一起使用。

    【讨论】:

    • 感谢您的建议。实际上,我正在测试一种类似的方法,我只需调用 .substring(1) 来删除前导的 '#'。如果这可行(当然,这需要一段时间来确认!)我会接受你的回答。
    • 是的,似乎就是这样。已对您的答案投了赞成票。
    • 顺便说一句,你怎么知道的?我在 Google 网站上的任何地方都找不到该信息。显然,以这种方式工作是有道理的,但我原以为脚本可以区分包含片段标识符的隐式跟踪命中和对跟踪函数的显式调用。
    • 当然——“显式”是指是否将参数传递给 urchinTracker()。当然,该函数可以根据是否提供显式字符串来做出决定。这样,客户就不必担心任何不允许的字符(例如,我想知道是否还有其他字符)。
    【解决方案3】:

    如果您想跟踪页内锚点点击,以下方法将在全局范围内起作用:

    window.onhashchange = function() {
      _gaq.push(['_trackPageview', location.pathname + location.search + location.hash]);
    }
    

    请注意,如果您有一些特定的 onclick 处理程序,例如

     $('#someid a').click(function(event){
       event.preventDefault();
       var target = $(this).attr('href');
       // some more clever stuff
     });
    

    您需要手动添加哈希来触发onhashchange

     $('#someid a').click(function(event){
       event.preventDefault();
       var target = $(this).attr('href');
       // triggers onhashchange
       location.hash = target;
       // some more clever stuff
     });
    

    【讨论】:

      【解决方案4】:

      听起来你想要Google Analytics Event Tracking 示例使用 onclick="" 垃圾,但我敢打赌你也可以将这些绑定到 jQuery 点击事件。

      【讨论】:

        【解决方案5】:
        1. 我尝试使用_uanchor = 1; 方法。这不起作用。它不起作用的原因是它旨在将 Google Analytics 参数作为哈希值发送,而不是发送 您的 哈希值。

          引用in Török Gábor's answer 的指南,将_uanchor 设置为1 具有以下效果:

          启用后,使用# 而不是默认的? 将请求词干与查询字符串分开

          这位于“广告系列跟踪”部分。

        2. Rob Knight's answer 工作正常,但我做了一个小修改。在伪代码中:

          if (href contains ?) {
          href = href.replace('#', '&');
          } else {
          href = href.replace('#', '?');
          }
          

        不确定拥有像foo.html&bar=baz 这样的 URL 对 GA 是否真的很重要,但对我来说它似乎更干净。

        【讨论】:

          【解决方案6】:
          猜你喜欢
          • 2014-05-29
          • 2011-06-14
          • 1970-01-01
          • 2021-01-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多