一般我們想讓一個a標簽點擊後執行javascript代碼,有以下幾種寫法:
方式一:<a href="#" onclick="alert(1);">點擊一</a>
這種方式的缺點就是點擊後會在地址欄的URL後面加#號,同時把頁面移動到頂部,一般不建議使用。
方式二:<a href="javascript:void(0);" onclick="alert(1);">點擊一</a>
這種方式避免了方式一的缺點,點擊後對頁面沒有任何影響。但是有一個致命的缺點,就是在IE6下不能執行form對象的submit()方法,也不能執行跳轉語句,比如
<a href="javascript:void(0);" onclick="document.forms[0].submit();">點擊一</a>
<a href="javascript:void(0);" onclick="window.location.href='http://www.google.com';">點擊一</a>
在IE6下就無效,換成href=”#”就能在IE6下正常執行。
方式三:<a href="###" onclick="alert(1);">點擊一</a>
點擊後雖然會在地址欄的URL後面加三個#號,但是不會影響滾動條,同時在IE6下也能執行form對象的submit()方法與跳轉語句,算是一個比較折中的方法。
結論:我個人認為如果執行的javascript方法中需要提交表單、跳轉頁面,則用方式三,其它情況都用方式二。
另:這又附帶引出另一個問題,一般重新加載當前頁面用如下的javascript代碼:
window.location.href = window.location.href;
但是當URL地址中含有#時,上述代碼無效,於是需要用如下代碼:
window.location.href = window.location.href.split('#')[0];
將URL地址以#符號分割開,取第一部分即可。
在很多情況下/index.htm#desc,後面的desc可能就是參數,不容易的參數顯示不同的內容,不是簡單錨點,而是ajax讀取內容。