我有一堆链接,它们使用target="_blank"属性在新窗口中打开。我想将Google Analytics目标跟踪附加到这些链接的点击上。
为此,我尝试将onclick="pageTracker._trackPageview('/event/outgoing')"属性附加到链接上。
但是我发现,对于带有target="_blank"属性的链接,Javascript onclick事件会被跳过。因此目标未被记录。换句话说,这个链接成功记录了目标:
<a href="http://www.yahoo.com" onclick="pageTracker._trackPageview('/event/outgoing')">Click me</a>
但这个并不行:
<a href="http://www.yahoo.com" target="_blank" onclick="pageTracker._trackPageview('/event/outgoing')">Click me</a>
有没有人知道为什么会出现这种情况?假设没有简单的解决方案,我想我必须使用Javascript来解决这个问题。以下代码成功记录了一个目标(但不打开链接):
function attach_goal_tracking() {
var links = document.getElementsByClassName("buyTicketsLink");
for(var i=0; i<links.length; i++) {
links[i].onclick = record_goal;
}
}
function record_goal(e) {
e.stop();
pageTracker._trackPageview('/event/outgoing');
}
但是当我添加record_goal函数以打开链接时...
function record_goal(e) {
e.stop();
pageTracker._trackPageview('/event/outgoing');
var newWindow = window.open(this.getAttribute('href'), '_blank');
newWindow.focus();
}
如果这个跟踪目标失败了,有人能告诉我可能是为什么,以及我应该怎么解决这个问题吗?顺便说一下,我正在使用Javascript的Prototype库。
e.stop()
是在Prototype事件对象上有效的方法调用,但你绑定到click
事件的方式完全绕过了Prototype事件绑定模型(即Event.observe
)在IE中。供参考。 - Crescent Fresh