2010-06-24 199 views
0

我的onclick事件下載有問題。當我點擊鏈接時,它不想觸發。它正常進行。但它確實與外部鏈接一起工作。我做了什麼明顯錯誤的?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

什麼瀏覽器? – 2010-06-24 15:09:27

+0

我們是否也可以看到正在調用的關聯腳本? – bpeterson76 2010-06-24 15:10:54

回答

0

我相信你需要返回false,防止點擊來自正常運行,這可能,但是,是具體的jQuery 。

我還建議使用框架而不是onclick屬性,它們很混亂,框架也會在其他方面有所幫助。

+0

我在我的函數中返回false。我以前是在線的,但沒有區別。 – YuppieGuppie 2010-06-24 15:36:24

0

您不會從onclick處理程序返回false。你從它調用的函數返回false,但是然後把它扔到處理程序中。你的意思是:

onclick="return trackExternalLink(this, '/links-the_royal_society_of_wildlife_trusts');" 

然而這一切都是onclick的東西很醜。考慮不顯眼的腳本。然後輸出setTimeout從字符串創建腳本的惡意呼叫。 Google真的推薦這個代碼嗎?它有點糟糕。

這裏有一個快速破解版本,包裝了行動統一到一個類名:

<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)顯然是的方式太長時間了;你可能想把它拉下來大概200ish。實際上,只要將信息傳遞到服務器的XMLHttpRequest完成,而不是使用任意延遲,就應該遵循鏈接,但Google似乎沒有給出該選項。多窮。再次,鏈接跟蹤pingback腳本無論如何都是一個令人討厭的,用戶敵對的活動。