javascript - target=_blank 不适用于 GA 出站链接跟踪

标签 javascript jquery google-analytics event-tracking outbound

我想跟踪对出站链接的点击并实现了以下代码:

GA代码

var trackOutboundLink = function(url) {
   ga('send', 'event', 'outbound', 'click', url, {'hitCallback':
     function () {
     document.location = url;
     }
   });
}

链接

<a class="postLinks" href="<?php if (get_field('source_link')) echo get_field('source_link'); ?>" onclick="trackOutboundLink('<?php if (get_field("source_link")) echo get_field("source_link"); ?>'); return false;"><?php the_title(); ?></a>

target=_blank

我根据网站访问者是否勾选复选框(然后将选择存储在 cookie 中)通过 jQuery 添加 target=_blank 属性。但是,如果我选择在新窗口中打开出站链接,它就不起作用了。勾选复选框时,它会正确地将目标属性添加到链接中,但是当我单击链接时,它会在同一窗口中打开它。

带目标属性的链接

<a class="postLinks" href="<?php if (get_field('source_link')) echo get_field('source_link'); ?>" onclick="trackOutboundLink('<?php if (get_field("source_link")) echo get_field("source_link"); ?>'); return false;" target="_blank"><?php the_title(); ?></a>

有什么想法吗?

最佳答案

如果您通过 JavaScript 通过更改 document.location 来更改页面 URL,则在链接上设置 target="_blank"将不会执行任何操作。

但是,您只需要在跟踪内部链接时使用 hitCallback。如果您有外部链接,因此 target="_blank",您的原始选项卡将保持打开状态,并且 ga 跟踪事件将正常完成 - 您不必担心在加载新页面之前确保它完成。

所以我认为您希望将点击处理程序更改为:

var trackOutboundLink = function(url, isExternal) {
    var params = {};

    if (!isExternal) {
        params.hitCallback = function () {
            document.location = url;
        }
    }
    ga('send', 'event', 'outbound', 'click', url, params);

    return isExternal;
}

当您将其附加为点击处理程序时

onclick="return trackOutboundLink(urlGoesHere, isExternalGoesHere)"

更具体的例子:

<a href="/" onclick="return trackOutboundLink('/', false)">An internal link</a>
<a href="http://www.example.com/" onclick="return trackOutboundLink('http://www.example.com', true)">An external link</a>

关于javascript - target=_blank 不适用于 GA 出站链接跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26938800/

相关文章:

javascript - 如何在不重新加载页面的情况下下拉 Opera Mini 上的菜单或任何内容?

javascript - Highcharts 散点图图例切换运行缓慢

javascript - Google Analytics/标签管理器 - 事件跟踪 - 我很困惑

oauth - Google Analytics API 在示例代码中返回 401

javascript - soundManager2 : Cannot Preload All Of My Sounds From Arrays Of Urls

javascript - 检查 SQL 数据库是否有 ASP.NET 更改的最佳实践

javascript - 如何使用 Javascript 设置动画的持续时间?

jquery - 如何从jquery移动动态页面中的按钮获取事件

javascript - 如何管理网站中的 jQuery 库?

ios - iOS 应用程序中的分析 - 请求用户同意