href="javascript:void(0)"
在 HTML 的 <a>
標籤中起到阻止連結預設跳轉行為的作用,常用於觸發 JavaScript 函式。
理解 javascript:void(0)
javascript:
URL 偽協議: 這部分告訴瀏覽器接下來的內容是 JavaScript 程式碼。void(0)
:void
是一個 JavaScript 運算子,它的作用是對錶達式求值,然後返回undefined
。0
是一個最常用的表示式,當然你也可以使用其他表示式,例如void(1)
,void('hello')
等,它們的效果是一樣的,最終都會返回undefined
。
為什麼要用 void(0)
而不是 #
或 javascript:;
?
雖然 #
和 javascript:;
也能阻止預設跳轉,但它們有一些潛在的問題:
#
: 會導致頁面跳轉到頂部或指定錨點,如果頁面沒有錨點,則會重新整理頁面。這可能會導致不必要的頁面滾動或重新載入,影響使用者體驗。javascript:;
: 雖然也能阻止跳轉,但某些瀏覽器可能會執行空語句,這可能會帶來一些不可預知的副作用,雖然很小。
javascript:void(0)
避免了這些問題,因為它明確地返回 undefined
,不會觸發任何瀏覽器預設行為,更加可靠和安全。
使用場景
- 配合 JavaScript 函式呼叫: 這是最常見的用法。點選連結時,透過
onclick
事件觸發 JavaScript 函式,同時href="javascript:void(0)"
阻止連結跳轉。
<a href="javascript:void(0)" onclick="myFunction()">點選我</a>
<script>
function myFunction() {
alert("Hello World!");
}
</script>
- 佔位符: 在某些情況下,你可能需要一個
<a>
標籤的樣式,但暫時不需要實際的連結,可以使用javascript:void(0)
作為佔位符,後續再新增實際的連結。
最佳實踐
雖然 javascript:void(0)
可以正常工作,但更推薦使用以下方式:
<button>
元素: 如果只是為了觸發 JavaScript 函式,使用<button>
元素更語義化,也更符合可訪問性要求。
<button onclick="myFunction()">點選我</button>
- 移除
href
屬性: 如果不需要任何連結行為,可以直接移除href
屬性,並使用 CSS 樣式來模擬連結樣式。
<a onclick="myFunction()" style="cursor: pointer; text-decoration: underline;">點選我</a>
總而言之,javascript:void(0)
是一種阻止 <a>
標籤預設跳轉行為的有效方法,但更推薦使用語義化更強的 <button>
元素或移除 href
屬性,並配合 JavaScript 事件處理函式來實現所需的功能。