我想跟踪用户点击指向外部网站的链接。我很高兴使用GA的异步版本,因为这允许(在大多数浏览器中)页面继续加载而不是停止脚本标记并等待google-analytics.com/ga.js下载和执行。
Google recommends此功能:
<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;">
此解决方案的问题:
document.location =
表示原始链接被忽略,因此target = _blank不会打开新的标签/窗口。答案 0 :(得分:1)
可能的解决方案:
do {curDate=new Date();} while(curDate-date<millis)
)100ms,而跟踪有机会发送请求,然后返回true 。糟糕,因为繁忙的等待消耗了所有可用的CPU。使用window.open
以便打开新的标签/窗口,这会将我带到我当前的最爱:
在点击处理程序中使用$(this).attr("target", "_blank");
,然后在将跟踪命令推送到_gaq后再使用return true
。
这是有效的,因为打开一个新选项卡会离开当前选项卡以完成跟踪调用。
$(document).ready(function(){
var localserver = document.location.hostname;
// unfortunately misses if any uppercase used in link scheme
$("a[href^=http://],a[href^=https://]")
.not("a[href^=http://"+localserver+"]")
.not("a[href^=http://www."+localserver+"]")
.click(function(e){
$(this).attr("target", "_blank");
_gaq.push(['_trackEvent',
'Outgoing Click',
$(this).attr("href"),
$(this).text()
]);
return true;
});
});
总是为外部链接打开一个新选项卡的一个小缺点是,我看不到任何其他问题。