【问题标题】:Firing 2 google analytics events with an outbound link使用出站链接触发 2 个谷歌分析事件
【发布时间】:2012-02-23 11:56:01
【问题描述】:

我的 html 中有这样的出站链接:

<a href="http://www.example.com" class="gaLink1" 
target="_blank" onCLick="ga_track_link('action', '123', 'abcde', 'fghij')"> 
<img src="http://www.example.com/image.jpg" alt="image name" height="180" style="max-width:153px;max-height:150px;" />
</a>

因此,当单击此图像时,链接 www.example.com 应该在新选项卡中打开,因为存在 target="_blank"。另外,onCLick 事件会调用 ga_track_link 函数,定义为:

function ga_track_link(action, id, name, source) {
    _gaq.push(['_trackEvent', 'category 1', action, id+': '+name]);
    _gaq.push(['_trackEvent', 'category 2', 'example', source, 15]);
}

这个函数定义在 html 末尾的 script 部分(在 body 部分内)

我在 GA 中观察到,两个事件都被跟踪(1 类和 2 类),但两者被跟踪的次数不相等。类别 2 出现了几乎一半的时间,这让我认为第二个事件并不总是被触发。

我找到了这个链接http://support.google.com/googleanalytics/bin/answer.py?hl=en&answer=55527 这建议将函数“ga_track_link”放在 html 的 head 部分,并在 onClick 函数中使用 return False。

根据When and why to 'return false' in JavaScript? 等其他一些答案,return false 语句将告诉事件 (onClick) 不会被触发,这不是我想要的,因为我确实希望它在我的 2 个 GA 事件之后被触发被解雇了。

所以,我有 3 个问题:

1) 在 1 次点击时触发超过 1 个 GA 事件(使用 _trackEvent)是否有任何问题?最好的方法是什么?

2) 为什么上面的 Google Analytics 链接声明函数应该放在 html 的 head 部分?

3) 有人可以澄清一下“return false”语句的目标以及如何正确使用它吗?

【问题讨论】:

    标签: onclick google-analytics outbound


    【解决方案1】:

    1) 1 次点击触发超过 1 个 GA 事件(使用 _trackEvent)有什么问题吗?最好的方法是什么?

    不,这没有问题,尽管你可以一键完成。 One Push, Multiple Commands

    2) 为什么上面的 Google Analytics 链接声明函数应该放在 html 的 head 部分?

    因为用户可能在 javascript 有时间在页面上加载之前点击链接。

    3) 有人可以澄清一下“return false”语句的目标以及如何正确使用它吗?

    我的理解是它会阻止元素的默认行为,如果在您的函数调用之后列出它应该对该函数调用没有影响。正如您引用的问题的答案之一所述:

    <a href="#" onclick="doSomeFunction(); return false;">
    

    在您提供的 Google Analytics(分析)支持链接中,return false; 正在阻止该链接立即将用户送出网站。它预先运行跟踪功能,然后在延迟后将用户重定向到外部站点。这允许跟踪代码在重定向之前发送所需的时间。

    function recordOutboundLink(link, category, action) {
        _gat._getTrackerByName()._trackEvent(category, action); //set tracking
        setTimeout('document.location = "' + link.href + '"', 100); // redirect to external site after delay
    }
    

    【讨论】:

    • 我投票赞成你的答案,因为运行我会尝试一键,多个命令,看看这是否解决了我的问题,尽管“return false”问题对我来说仍然不清楚。如果此解决方案完美运行,我会将其标记为“已接受的答案”
    • @duduklein 我修改了我的答案以澄清return false; 问题。
    • 对两个事件使用一键的解决方案效果很好!现在,这两个类别的事件数量相等。谢谢
    【解决方案2】:

    您是否在使用ga_track_link() 函数的所有链接上都有target="_blank"

    如果链接在同一窗口中打开,则 _trackEvent 发出的跟踪像素请求可能没有时间在新页面开始获取之前完成。如果链接在新窗口中打开,则没有问题。

    【讨论】:

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