我想跟踪出站链接的点击次数并实施以下代码:
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>
目标= _blank
我通过jQuery添加target=_blank
属性,基于网站的访问者是否勾选复选框(然后将选择存储在cookie中)。但是,如果我选择在新窗口中打开出站链接,则它不起作用。勾选复选框时,它会正确地将目标属性添加到链接中,但是当我单击链接时,它会在同一窗口中打开它。
与目标属性的链接
<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>
有什么想法吗?
答案 0 :(得分:14)
如果您通过更改document.location通过JavaScript更改页面网址,链接上的target =“_ blank”将无法执行任何操作。
但是,当您跟踪内部链接时,您只需要使用hitCallback。如果你有一个外部链接,因此target =“_ blank”,你的原始标签会保持打开状态,并且ga跟踪事件将照常完成 - 你不必担心在加载新页面之前确保它完成。< / p>
所以我认为您想要将您的点击处理程序更改为:
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>
答案 1 :(得分:5)
只想支持温尼伯的一些人回答上面的答案。不能让我评论,但他的解决方案有效!
Google建议的代码(无法在新标签中打开链接)是:
var trackOutboundLink = function(url) {
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon',
'hitCallback': function(){document.location = url;}
});
}
<a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com'); return false;">Check out example.com</a>
但是,如果您更改&#34; document.location = url;&#34; to&#34; document.location = href;&#34;并在链接标记中,更改&#34;返回false;&#34; to&#34;返回true;&#34;并添加&#34; target =&#34; _ blank&#34;,该链接将在新标签页中打开,并跟踪出站链接。
所以,有效的代码是:
var trackOutboundLink = function(url) {
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon',
'hitCallback': function(){document.location = href;}
});
}
<a href="http://www.example.com" onclick="trackOutboundLink('http://www.example.com'); return true;" target="_blank;">Check out example.com</a>
答案 2 :(得分:3)
这将使所有链接在新窗口中打开:
var trackOutboundLink = function(url) {
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon',
'hitCallback': function(){window.open(url);}
});
}
我只是从https://support.google.com/analytics/answer/1136920
更改document.location = url;
到window.open(url);
代码
您还可以更改函数名称,并为新窗口链接指定一个,并为同一窗口链接指定一个。这将改变第一行,如:
var trackOutboundNewWindow = function(url) {
然后链接将是
<a href="http://www.example.com" onclick="trackOutboundNewWindow('http://www.example.com'); return false;">Check out example.com</a>
答案 3 :(得分:1)
找到解决方案(截至2016年2月6日)
<script>
var trackOutboundLink = function(url) {
ga('send', 'event', 'outbound', 'click', url, {
'transport': 'beacon',
'hitCallback': function(){document.location = href;}
});
}
</script>
然后让你的链接看起来像这样......
<a href="http://www.example.com" onclick="trackOutboundLink('label name'); return true;" target="_blank">text</a>
答案 4 :(得分:0)
DRY - 使用“tracked
”级别跟踪所有锚点。请注意,此代码对弹出窗口阻止程序很敏感。 window.open
来电需要在ga
来电之外。
/**
* Function that tracks a click on an outbound link in Analytics.
*/
$(function() {
//only create event tracking if ga has loaded
ga(function(){
$("a.tracked").click(function(e) {
var url = $(this).attr("href");
var newWindow = ($(this)[0].target || '').toLowerCase() === '_blank';
if(newWindow) {
window.open(url, '_blank');
}
ga("send", "event", "outbound", "click", url, {
"hitCallback": function () {
if(!newWindow) document.location = url;
}
});
e.preventDefault();
});
});
});
答案 5 :(得分:-2)
这有效:
hitCallback': function(){window.open(url);}
希望事件跟踪不会受到任何影响。