預設行為攔截(e.preventDefault()) - daniel-qa/Vue GitHub Wiki

它是 原生 JavaScript(Web API)中 事件對象(Event Object) 的一個內置方法。

以下是詳細拆解:

  1. 它是什麼?

e (或 event)當你在網頁上進行操作(如點擊、貼上、提交表單)時,瀏覽器會自動產生一個「事件對象」,裡面包含了這個動作的所有資訊。

.preventDefault():這是該對象的一個方法。它的唯一功能是:「告訴瀏覽器,不要執行這個事件預設會觸發的動作」。

  • 範例 A:在 methods 中使用

當你監聽 iView 的組件事件時:

methods: {
  handlePaste(e) { 
    // e 就是原生事件對象
    e.preventDefault(); // 攔截瀏覽器行為
  }
}
  • 範例 B:Vue 的語法糖(修飾符)

Vue 為了讓你少寫這行代碼,提供了 .prevent 修飾符。這兩者在功能上是完全等價的:

手動寫法:

<form @submit="handleSubmit">(然後在 function 裡寫 e.preventDefault())

Vue 快捷寫法:

<form @submit.prevent="handleSubmit">
  • 常見的「預設行為」有哪些?

如果你不呼叫 preventDefault(),瀏覽器會自作主張做這些事:

事件類型 瀏覽器預設行為 使用 preventDefault() 後效果
paste (貼上) 將內容插入輸入框 不自動插入,可先用程式過濾內容後再手動插入
submit (表單提交) 重新整理網頁並跳轉 URL 不重新整理,可用 AJAX / Axios 非同步送出資料
click () 跳轉到超連結設定的網址 不跳轉,常用於當作按鈕功能的連結
contextmenu (右鍵) 跳出瀏覽器右鍵選單 不跳出選單,可自訂右鍵功能