(內容摘自:https://blog.csdn.net/chenchunlin526/article/details/77346049)
Html A標簽中 href 和 onclick 同時使用的問題 優先級別
1 順序
ie 6 : href 先觸發 onclick 后觸發
其他瀏覽器 先觸發onlick 后觸發 href
2 href="javascript: xxx()"
不能傳入this作為參數
onclick可以
代碼如下 | 復制代碼 |
<a href="javascript:alert('href event');" onclick="clickevent(this);"> |
3 優先觸發的方法如果返回 false 導致后一個事件不被觸發
比如
代碼如下 | 復制代碼 |
<a href="javascript:alert('href event');" onclick="clickevent(this); return false;"> |
4
<a href="#"> 會導致頁面定位到書簽位置,
5
由於 1和 4 的原因
在ie6 下 同時有 <a href="#" 和 onclick的時候 由於頁面先因為href重新載入了一次,導致 onclick事件被瀏覽器丟棄。
6 總結:
1) 在不需要傳遞this作為方法的參數時候,推薦
只使用href="JavaScript: "
2) 如果需要使用this參數,推薦
代碼如下 | 復制代碼 |
<a href="javascript:void(0);" onclick="doSomthing(this)" > |
如下面一個列子。
我們需要A在第一次和第二次點擊的時候 訪問 href 第3次以后的就訪問另一個地址
代碼如下 | 復制代碼 |
var href=0 function clicka(obj) |
在a標簽的href與onclick中使用javascript的區別
鏈接的 onclick 事件被先執行,其次是 href 屬性下的動作(頁面跳轉,或 javascript 偽鏈接);
假設鏈接中同時存在 href 與 onclick,如果想讓 href 屬性下的動作不執行,onclick 必須得到一個 false 的返回值。不信,你可以將 goGoogle 函數中的 return false 注釋掉;
如果頁面過長有滾動條,且希望通過鏈接的 onclick 事件執行操作。應將它的 href 屬性設為 javascript:void(0);,而不要是 #,這可以防止不必要的頁面跳動;
如果在鏈接的 href 屬性中調用一個有返回值的函數,當前頁面的內容將被此函數的返回值代替;
在按住Shift鍵的情況下會有所區別。
今天我遇到的問題,在IE6.0里以href的形式訪問不到parentNode。
盡量不要用javascript:協議做為A的href屬性,這樣不僅會導致不必要的觸發window.onbeforeunload事件,在IE里面更會使gif動畫圖片停止播放。