我想跟踪对出站链接的点击并实现了以下代码:
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/