我使用以下link来记录通过Google Analytics的出站链接。是否可以在新窗口中打开链接?
<script type="text/javascript">
function recordOutboundLink(link, category, action)
{
try {
var myTracker=_gat._getTrackerByName();
_gaq.push(['myTracker._trackEvent', category , action ]);
setTimeout('document.location = "' + link.href + '"', 100)
}
catch(err)
{
}
}
</script>
<a href="http://www.example.com" onClick="recordOutboundLink(this, 'Outbound Links', 'example.com');return false;">
答案 0 :(得分:5)
编辑,我忘了添加target =“_ blank”:
我会这样跟踪出站链接:
<a href="http://outgoinglink.com" target="_blank" onclick="_gaq.push(['_trackEvent','outgoing_links','outgoinglink.com'])">Link Text</a>
答案 1 :(得分:1)
杰夫的回答非常接近我解决这个问题。谷歌推荐的代码打破了target = _blank,而window.open策略被弹出窗口拦截器捕获。我像这样修改了目标测试:
if (!link.target || link.target.match(/^_(self|parent|top)$/i)){
return false;
setTimeout(function() { document.location = link.href }, 100);
} else {
return true;
}
答案 2 :(得分:1)
将document.location = url;
替换为window.open(url)
,它会在新窗口中打开并同时跟踪。您不需要修改链接,只需在onclick上调用JS函数。
答案 3 :(得分:0)
以下是您提供的链接的修改后的片段,该片段既适用于在当前窗口中打开的链接,也适用于在新窗口中打开但未经任何修改的链接:
<script type="text/javascript">
// Records an event for an outbound link. Supports links even if they open in a
// different window (target="_blank").
// Don't forget to return the return value of this function from the onclick handler.
// link - A reference to the <a> anchor object to which this call is attached
// parameters - Parameters to pass to the event, in an array:
// category/action/label/value/noninteraction or some subset; see GA docs.
// Pass "undefined" (the value, not the string) for unspecified optional params if necessary.
// Exmaple:
// <a href="http://www.google.com"
// onclick="return recordOutboundLink(this, ['category', 'action', 'label', 6.6, false);">link</a>
function recordOutboundLink(link, parameters) {
try {
_gaq.push(['_trackEvent'].concat(parameters));
if (link.target == '_blank') {
return true;
} else {
setTimeout(function() { document.location = link.href }, 100);
return false;
}
} catch (err) {
return true;
}
}
</script>
以下是两种链接类型。请注意,onclick处理程序在两者中都是相同的:
<a href="http://www.example.com"
onClick="return recordOutboundLink(this, ['Outbound Links', 'example.com']);">
<a href="http://www.example.com"
target="_blank"
onClick="return recordOutboundLink(this, ['Outbound Links', 'example.com']);">
<强>限制强>:
答案 4 :(得分:0)
更常见的情况是target
是什么,比如
<a>
元素的默认值。与_self
的含义相同。_blank
- 将网址加载到新窗口/标签页_self
- 网址替换当前页面。_parent
- 将网址加载到父框架_top
- 网址替换了可能加载的所有框架集你可以修改一行
setTimeout('document.location = "' + link.href + '"', 100)
到此:
setTimeout('window.open("' + link.href + '", link.target == "" ? "_self" : link.target)', 100)
奇怪的是,向""
提供window.open
与提供_blank
相同,因此需要额外的?:
运算符。
顺便提一下:您提供的代码(以及官方Google示例提供的代码)应略微修改以正常工作,请参阅How do I set up Google Analytics to track outbound links? The official example doesn't work