我用下面的链接记录,通过谷歌分析出站链接。 是否有可能打开新窗口中的链接?
<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;">
编辑,我忘了补充目标=“_空白”:
我会做这种方式跟踪出站链接:
<a href="http://outgoinglink.com" target="_blank" onclick="_gaq.push(['_trackEvent','outgoing_links','outgoinglink.com'])">Link Text</a>
杰夫的回答是非常接近解决这个问题对我来说。 从谷歌的推荐代码打破目标= _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;
}
更换document.location = url;
用window.open(url)
在新窗口中打开,并在同一时间跟踪。 你并不需要修改链接,只需调用的onclick的JS功能。
在一般情况下
在更一般的情况下, target
是什么,像
- 空字符串-默认为
<a>
元素。 相同的意思_self
。 -
_blank
- URL被加载到一个新的窗口/标签 -
_self
- URL替换当前页面。 -
_parent
- URL被加载到父框架 -
_top
- URL替换可以加载任何框架集 - 名称 -窗口的名称
您可以修改行
setTimeout('document.location = "' + link.href + '"', 100)
为此:
setTimeout('window.open("' + link.href + '", link.target == "" ? "_self" : link.target)', 100)
奇怪的是,提供""
给window.open
是一样提供_blank
,因此多余的?:
运营商是必要的。
顺便说一句:您提供的代码(由谷歌官方的例子提供的代码)必须稍加修改工作正确 ,请参阅如何设置谷歌Analytics(分析)来追踪出站链接? 官方的例子不工作
下面是从你提供的,应该工作无论是在当前窗口,并在没有任何修饰一新窗口中打开链接打开链接链接修改的摘录:
<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']);">
限制 :
- 如果浏览器忽略“目标=‘空白’”,而是开在同一窗口的URL(如Facebook的iOS应用内一个UIWebView),那么该链接可能不会跟踪。 这也是ErikdR的接受的答案也是如此。 您可以添加代码来检测这样的情况下(如检测通过JavaScript的iPad / iPhone的WebView )。
- 如果用户试图CTRL- /倒班/ CMD单击没有一个链接(即在新标签或窗口中打开)“的目标=‘空白’”,该网址将在现有窗口中打开,而不是打开在一个新的窗口。 同样是罗斯林的代码片段(和谷歌的官方代码示例)也是如此。 同样,你可以添加代码来处理这些特殊情况。