請解釋下href="javascript:void(0)"和href="#"的區別是什麼?

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

在前端開發中,href="javascript:void(0)"href="#" 都常用於阻止連結的預設跳轉行為,但它們有一些細微的差別:

href="javascript:void(0)"

  • 作用: 執行 JavaScript 中的 void(0) 表示式,該表示式返回值為 undefined。 這有效地阻止了連結的預設跳轉行為。
  • 優點: 最為推薦的做法。語義清晰,明確表示不進行任何跳轉操作。不會觸發頁面滾動到頂部或底部。
  • 缺點: 如果 JavaScript 被禁用,連結將無法正常工作。

href="#"

  • 作用: 連結到當前頁面的頂部(帶有 # 的 URL 通常表示頁面內錨點)。
  • 優點: 簡單易用。即使 JavaScript 被禁用,連結仍然有效(只是會跳轉到頁面頂部)。
  • 缺點: 如果頁面較長,點選連結會導致頁面滾動到頂部,這可能不是預期的行為。如果頁面本身就有錨點連結,可能會與之衝突。 在某些情況下,可能會重新載入頁面。

href="javascript:;" (不推薦)

雖然也有人使用 href="javascript:;",但這種方式不如 javascript:void(0) 清晰,並且可能在某些瀏覽器中引發問題。

最佳實踐:

為了獲得最佳的相容性和使用者體驗,推薦使用 href="javascript:void(0)" 並結合 <button><a role="button"> 等更語義化的標籤。例如:

<a href="javascript:void(0)" onclick="myFunction()">Click me</a>

<button onclick="myFunction()">Click me</button>

<a role="button" href="javascript:void(0)" onclick="myFunction()">Click me</a>

使用 <button> 元素是最推薦的做法,因為它本身就具有按鈕的語義,並且不需要額外的屬性來阻止預設行為。 如果必須使用 <a> 標籤,則新增 role="button" 可以提高可訪問性。

總結: 避免使用 href="#", 優先使用 href="javascript:void(0)", 最好使用 <button> 元素。

希望這個解釋對您有所幫助!

相關文章