預設行為攔截(e.preventDefault()) - daniel-qa/Vue GitHub Wiki
它是 原生 JavaScript(Web API)中 事件對象(Event Object) 的一個內置方法。
以下是詳細拆解:
- 它是什麼?
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 (右鍵) | 跳出瀏覽器右鍵選單 | 不跳出選單,可自訂右鍵功能 |