这是您提供的链接中的修改片段,它既适用于在当前窗口中打开的链接,也适用于在新窗口中打开而无需任何修改的链接:
<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']);">
限制:
- 如果浏览器忽略 'target="blank"' 而是在同一窗口中打开 URL(例如 Facebook iOS 应用程序中的 UIWebView),则链接可能不会被跟踪。ErikdR 接受的答案也是如此。您可以添加代码来检测这样的情况(例如通过 javascript 检测 ipad/iphone webview)。
- 如果用户尝试按 ctrl-/shift-/cmd-click(即在新选项卡或窗口中打开)没有“target="blank"' 的链接,则 URL 将在现有窗口中打开而不是打开在新窗口中。Roslyn 的代码片段(以及 Google 的官方代码示例)也是如此。同样,您可以添加代码来处理这些特殊情况。