我在下载onclick事件时遇到问题。点击链接时它不想触发。它只是正常进行。但它确实适用于外部链接。我做过一些明显错误的事吗?
<a href="http://www.wildlifetrusts.org/" target="_blank" onclick="trackExternalLink(this, '/links-the_royal_society_of_wildlife_trusts');">Royal Society of Wildlife Trusts.</a>
<a href="/c2/uploads/our strategy for 2010_15.pdf" target="_blank" onclick="trackExternalLink(this, '/downloads-our_strategy_for_2010-15');">2010-2015 strategy,</a>
它在FF,Chrome和IE 8中做同样的事情。
function trackExternalLink(link, action) {
_gaq.push(['_trackPageview', action]);
setTimeout('document.location = "' + link.href + '"', 25000)
return false;
}
答案 0 :(得分:0)
我认为你需要返回false以防止点击正常运行,但这可能是特定于jQuery的。
我还建议使用框架而不是onclick属性,它们很混乱,框架在其他方面也会有所帮助。
答案 1 :(得分:0)
您没有从false
处理程序返回onclick
。你从它调用的函数返回false
,然后将它丢弃在处理程序中。你的意思是:
onclick="return trackExternalLink(this, '/links-the_royal_society_of_wildlife_trusts');"
然而,所有这些onclick
的东西都非常难看。考虑不引人注目的脚本。并且从字符串中删除了对setTimeout
创建脚本的讨厌调用。谷歌真的推荐这个代码吗?它有点糟糕。
这是一个快速的黑客版本,它将动作包装成一个类名:
<a href="http://www.wildlifetrusts.org/" class="ping-links-the_royal_society_of_wildlife_trusts">Royal Society of Wildlife Trusts.</a>
<script type="text/javascript">
for (var i= document.links.length; i-->0;)
if (document.links[i].className.substring(0, 5)==='ping-')
document.links[i].onclick= pingclick;
function pingclick() {
var action= this.className.substring(5);
var href= this.href;
_gaq.push(['_trackPageview', action]);
setTimeout(function() {
location.href= href;
}, 25000);
return false;
}
</script>
这仍然不是很好。 25秒(25000
)显然方式延迟太久;你可能想把它降到200左右。实际上,一旦将信息传递到服务器的XMLHttpRequest完成,它应该跟随链接,而不是使用任意延迟,但Google似乎没有给你这个选项。多穷然而,无论如何,链接跟踪pingback脚本是一个讨厌的,用户敌对的活动。