href="#" vs. href="javascript:void(0)"
開發的時候有時需要用link(<a>)來觸發一些javascript事件,所以常常可以看到如下的代碼:<a href="javascript:void(0)" onclick="doSomething();returnfalse;">Link</a>
這是一個曾經被多次討論過的問題,長期以來,我也一直是這樣寫的。讀了 a href=”javascript:void(0);” — avoid the void 之后,我認同了作者的意見。下面的寫法確實更合理:
<a href="#" onclick="doSomething();returnfalse;">Link</a>
或者
<script type="javascript"> function doSomething() { //doSomething returnfalse; } </script> <a href="#" onclick="return doSomething();">Link</a>
以往大家不使用"#"的問題是,這將導致點擊鏈接時頁面跳回頁面頂部,但通過 return false 語句將使得瀏覽器忽略鏈接的默認動作,從而避免了此問題。
youngpup 更有意思,他在How to Create Pop-Up Windows 中言辭激烈的倡導大家永遠永遠永遠不要使用 javascript: 偽協議:
Never, ever, ever use the javascript: pseudo-protocol for anything, ever ever ever ever again. Please. Pretty please.
他的解決方案是:
<a href="http://google.com/" onclick="window.open(this.href, 'popupwindow', 'width=400,height=300,scrollbars,resizable'); returnfalse;">
這樣的好處就是可以保存到書簽或者收藏夾,可以左鍵單擊,也可以右鍵使用!