網頁

2013年5月11日

[html, css, javascript] 解決點擊超連結捲軸往上移的問題

當使用HTML做<a href='#' onclick='........'></a>超連結時,會發現點擊超連結後,捲軸會往上移至原點,這是因為網址裡面的「#」符號,是用在把捲軸移動至頁面某個錨點使用,當沒有指定錨點名稱(空白)或錨點不存在時(要將頁面移至TOP可以用此方式),瀏覽器的反應就是將捲軸移至原點(TOP),這就是捲軸會往上移的原因,遇到這個問題,在此提供三個方式,提供參考使用。

方式一:
//使用CSS模擬成超連結(要自行處理link、visited、hover、active事件)。
<a style='cursor: pointer;' onclick='....'>點我捲軸不會往上跑</a>

方式二:
//將href指向一個無效動作(會引發onbeforeunload事件)。
<a href='javascript: void(0)' onclick='....'>點我捲軸不會往上跑</a>

方式三:
//在onclick事件最後使用return false做中斷結束(後續事件會被阻擋)。
<a href='#' onclick='.......; return false;'>點我捲軸不會往上跑</a>