a標籤下的href="javascript:void(0)"起到了什麼作用?說說你對javascript:void(0)的理解?

王铁柱6發表於2024-11-24

href="javascript:void(0)" 在 HTML 的 <a> 標籤中起到阻止連結預設跳轉行為的作用,常用於觸發 JavaScript 函式。

理解 javascript:void(0)

  • javascript: URL 偽協議: 這部分告訴瀏覽器接下來的內容是 JavaScript 程式碼。
  • void(0): void 是一個 JavaScript 運算子,它的作用是對錶達式求值,然後返回 undefined0 是一個最常用的表示式,當然你也可以使用其他表示式,例如 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 事件處理函式來實現所需的功能。

相關文章