onclick不会下载

时间:2010-06-24 15:08:02

标签: javascript-events

我在下载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;
}

2 个答案:

答案 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脚本是一个讨厌的,用户敌对的活动。