JS學習筆記#10 | JavaScript 事件處理與阻止

更新 發佈閱讀 4 分鐘


JavaScript 的事件處理是網頁開發中的重要部分,本文將介紹兩個常用的方法:event.stopPropagation()event.preventDefault(),並簡要說明它們的作用與使用情境。

事件物件 event

當網頁觸發某個事件時,瀏覽器會自動生成一個事件物件,稱為 event,此物件包含事件的相關資訊,如觸發事件的 DOM 元素和觸發原因等。


1. event.stopPropagation()

背景知識:事件冒泡

當一個 DOM 元素的事件被觸發後,該事件會沿著 DOM 樹從內到外傳播,這種現象稱為「事件冒泡」。

範例: 假設我們有以下結構:

<div id="outer">
<div id="middle">
<button id="inner">點我</button>
</div>
</div>

若為三個元素(outermiddleinner)分別設置 click 事件,當點擊 inner 時,外層的 middleouter 事件也會被觸發。

解決方法:阻止事件冒泡

使用 event.stopPropagation() 可以有效地阻止事件冒泡,僅觸發目標元素的事件,而不會傳播到外層元素。

範例:

document.getElementById('inner').addEventListener('click', (event) => {
event.stopPropagation();
console.log('僅執行內層按鈕事件');
});

效果:點擊 inner 按鈕只觸發 innerclick 事件。


2. event.preventDefault()

功能:取消事件的預設行為

某些 DOM 元素(如 <a> 超連結或 <form> 表單)會有預設行為。例如,點擊 <a> 超連結會跳轉到指定的網址。若不希望執行此預設行為,可使用 event.preventDefault()

範例:

HTML:

<a id="clickMe" href="https://example.com">跳轉到 Example</a>

JavaScript:

document.getElementById('clickMe').addEventListener('click', (event) => {
event.preventDefault();
console.log('阻止跳轉,執行自定義邏輯');
});

效果:點擊連結後,頁面不會跳轉,但會執行 console.log


某些情境下:return false 的作用

在某些情境下,我們會使用 return false 來取消事件的執行。但需注意:

  • return false 只能取消 DOM 元素的預設行為。
  • 無法阻止事件冒泡。

範例:

document.getElementById('clickMe').onclick = function () {
console.log('僅取消預設行為,無法阻止冒泡');
return false;
};

總結

  • event.stopPropagation() : 阻止事件冒泡,不希望事件傳播到父層元素時。
  • event.preventDefault() : 取消事件的預設行為,禁止預設功能(如連結跳轉、表單提交)時。
  • return false : 僅取消預設行為,無法阻止冒泡,用於簡單的事件處理。


留言
avatar-img
koko的沙龍
1會員
34內容數
koko的沙龍的其他內容
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/28
在 React 的世界裡,Props 負責從父元件向子元件傳遞資料,而 State 則是負責管理元件自身的內部資料。 State 就像元件的記憶,可以儲存元件的狀態,並根據狀態的變化來更新 UI。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 就像一個個獨立的個體,各自負責 UI 的一部分,要讓這些個體協同工作,就需要一種溝通的機制,而 Props 就是組件之間通信和數據傳遞的主要方式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 扮演著至關重要的角色。它們是構成使用者介面 (UI) 的基本 building blocks,如同積木一般,可以組合成複雜的應用程式。
Thumbnail
2025/04/27
在 React 的世界裡,元件 (Component) 扮演著至關重要的角色。它們是構成使用者介面 (UI) 的基本 building blocks,如同積木一般,可以組合成複雜的應用程式。
Thumbnail
看更多
你可能也想看
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
創業者常因資金困境而無法抓住機會,利用房產活化讓二胎房貸成為財務策略的有力夥伴。 諮詢國峯厝好貸的二胎房貸服務,讓你的房子成為你最強力的天使投資人,推動事業成長。
Thumbnail
創業者常因資金困境而無法抓住機會,利用房產活化讓二胎房貸成為財務策略的有力夥伴。 諮詢國峯厝好貸的二胎房貸服務,讓你的房子成為你最強力的天使投資人,推動事業成長。
Thumbnail
本文介紹XSS (跨站腳本攻擊) 的原理、ASP.NET Web Forms 應用程式中常見的漏洞、測試範例以及如何使用Server.HtmlEncode()函式來防止XSS攻擊。透過適當的輸入驗證和編碼,可以有效降低XSS攻擊風險,提升網站安全性。
Thumbnail
本文介紹XSS (跨站腳本攻擊) 的原理、ASP.NET Web Forms 應用程式中常見的漏洞、測試範例以及如何使用Server.HtmlEncode()函式來防止XSS攻擊。透過適當的輸入驗證和編碼,可以有效降低XSS攻擊風險,提升網站安全性。
Thumbnail
JavaScript 的事件處理是網頁開發中的重要部分,本文將介紹兩個常用的方法:event.stopPropagation() 與 event.preventDefault(),並簡要說明它們的作用與使用情境。
Thumbnail
JavaScript 的事件處理是網頁開發中的重要部分,本文將介紹兩個常用的方法:event.stopPropagation() 與 event.preventDefault(),並簡要說明它們的作用與使用情境。
Thumbnail
允許未經過濾的使用者內容執行會帶來攻擊風險。建議參考 HTML5 Security Cheat Sheet 和 OWASP's XSS Prevention Cheat Sheet,並檢查依賴項源代碼是否存在危險模式。
Thumbnail
允許未經過濾的使用者內容執行會帶來攻擊風險。建議參考 HTML5 Security Cheat Sheet 和 OWASP's XSS Prevention Cheat Sheet,並檢查依賴項源代碼是否存在危險模式。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
Thumbnail
談了許多網路安全的議題,提醒民眾要注意哪些事情,建構哪些網路安全思維,讓我們可以降低踏入詐騙陷阱的風險。但除了民眾本身要不斷學習、提升防詐意識外,是不是還有其他方面的作法呢? 本文就來聊聊在企業端可以做些什麼。 要打造一個密不可破的防護網,企業端就不能夠缺席。 舉幾個例子讓大家知道。
Thumbnail
本篇介紹了一個名為 DOMPurify 的套件,它可以增加網站對 XSS 攻擊的防護力。DOMPurify 可以幫助開發人員過濾和清除不受信任的輸入,以防止 XSS 攻擊。本文提供了 DOMPurify 的安裝和使用方法,並提供了一個範例 Demo 供參考。
Thumbnail
本篇介紹了一個名為 DOMPurify 的套件,它可以增加網站對 XSS 攻擊的防護力。DOMPurify 可以幫助開發人員過濾和清除不受信任的輸入,以防止 XSS 攻擊。本文提供了 DOMPurify 的安裝和使用方法,並提供了一個範例 Demo 供參考。
Thumbnail
我們前一篇介紹了「【Web系列】訂閱技術的基石,RSS Feed是什麼?」,相信也對於訂閱的機制具備一定的認識了,雖然RSS已經能夠滿足我們訂閱的一些基本需求,但由於主要的訂閱端還是定期去檢查更新資訊,因此假設我們想要在最短時間內掌握最新資訊時,仍會有一些延遲,再者也非常浪費頻寬。 我們為什麼不能改
Thumbnail
我們前一篇介紹了「【Web系列】訂閱技術的基石,RSS Feed是什麼?」,相信也對於訂閱的機制具備一定的認識了,雖然RSS已經能夠滿足我們訂閱的一些基本需求,但由於主要的訂閱端還是定期去檢查更新資訊,因此假設我們想要在最短時間內掌握最新資訊時,仍會有一些延遲,再者也非常浪費頻寬。 我們為什麼不能改
Thumbnail
在前文提及網站漏洞掃描(Website Vulnerability Scan),會對企業造成營運負擔,包括數據洩露、損害公司聲譽、監管複雜化等負面後果。所以能夠通過防禦措施,來組織需要工具和專業知識來作快速而效地做出響應,從而作出適切的對應措施。下文會為大家一一講解安全事件響應對企業的重要性。
Thumbnail
在前文提及網站漏洞掃描(Website Vulnerability Scan),會對企業造成營運負擔,包括數據洩露、損害公司聲譽、監管複雜化等負面後果。所以能夠通過防禦措施,來組織需要工具和專業知識來作快速而效地做出響應,從而作出適切的對應措施。下文會為大家一一講解安全事件響應對企業的重要性。
Thumbnail
我們前一篇介紹了「【Web系列】訂閱技術的基石,RSS Feed是什麼?」,相信也對於訂閱的機制具備一定的認識了,雖然RSS已經能夠滿足我們訂閱的一些基本需求,但由於主要的訂閱端還是定期去檢查更新資訊,因此假設我們想要在最短時間內掌握最新資訊時,仍會有一些延遲,再者也非常浪費頻寬。 結語
Thumbnail
我們前一篇介紹了「【Web系列】訂閱技術的基石,RSS Feed是什麼?」,相信也對於訂閱的機制具備一定的認識了,雖然RSS已經能夠滿足我們訂閱的一些基本需求,但由於主要的訂閱端還是定期去檢查更新資訊,因此假設我們想要在最短時間內掌握最新資訊時,仍會有一些延遲,再者也非常浪費頻寬。 結語
Thumbnail
1. 設定cookie為HttpOnly 在一般的情況下,cookie是可以透過javascript來存取的(document.cookie),如同上一篇所說的,有可能會有XSS攻擊的風險。 將cookie設定為HttpOnly,表示這個cookie無法透過js存取。
Thumbnail
1. 設定cookie為HttpOnly 在一般的情況下,cookie是可以透過javascript來存取的(document.cookie),如同上一篇所說的,有可能會有XSS攻擊的風險。 將cookie設定為HttpOnly,表示這個cookie無法透過js存取。
Thumbnail
Cross-Site Scripting簡稱XSS,它指的是駭客在網頁裡插入惡意程式碼,當其他user瀏覽該網頁時,惡意網頁程式碼就會被執行。
Thumbnail
Cross-Site Scripting簡稱XSS,它指的是駭客在網頁裡插入惡意程式碼,當其他user瀏覽該網頁時,惡意網頁程式碼就會被執行。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News