a標簽的 onclick 和 href 哪個先執行?


 以下這種寫法,onclick 事件先執行, href 屬性下的動作后執行(頁面跳轉或 javascript 偽鏈接),如果不想執行 href 屬性下的動作,onclick 需要返回 false。

<a href="https://www.baidu.com/" onclick="doSomething()">鏈接</a>

這種寫法我在寫側邊導航欄的時候用到了,就是點擊事件和頁面跳轉事件同時存在,可能頁面跳轉事件處理並沒有覆蓋掉點擊事件的處理程序,所以暫時沒有出現什么問題,但總感覺怪怪的,以后發現問題的話再補充吧……

 

如果實際應用中,確實需要 a 標簽來響應 onclick 事件的,且不想執行 href 屬性下的動作,推薦以下3種寫法:

1、 javascript:void(0) 相當於一個死鏈接,href 不執行

<a href="javascript:void(0)" onclick="doSomething()">鏈接</a>

 

2、onclick 返回 false,href 不執行

<a href="https://www.baidu.com/" onclick="doSomething();return false;">鏈接</a>

 

3、onclick 返回 false,href 不執行

<a href="https://www.baidu.com/" onclick="doSomething();event.returnValue=false;">鏈接</a>

 

以下這種寫法也可以用,但不推薦

<a href="javascript:open()">鏈接</a>

不推薦原因:盡量不要使用 javascript: 協議作為 a 的 href 屬性,這樣會導致不必要的觸發 window.onbeforeunload 事件,在IE下還會使 gif 動畫圖片停止播放。

 

再嚴重一點,可能會有人這么寫

<a href="javascript:open()" onclick="doSomething()">鏈接</a>

不推薦原因:我在想,如果這兩個事件里處理的東西沒有重疊,不會互相覆蓋的話,那這么寫可不可以?有待考證

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM