前言
在某些網頁應用中,開發者可能希望防止使用者透過滑鼠右鍵開啟選單,以避免內容被輕易複製或操作。這段程式碼提供了一個簡單且不影響其他滑鼠功能的解決方案,適合有基礎 JavaScript 知識且想快速實作右鍵禁用的工程師或自學者。
事件監聽與右鍵選單阻擋
核心概念是監聽瀏覽器的 contextmenu 事件,該事件會在使用者嘗試開啟右鍵選單時觸發。透過呼叫 event.preventDefault(),可以阻止預設行為,也就是禁止顯示右鍵選單。
重要程式碼片段
document.addEventListener("contextmenu", function (e) {
e.preventDefault();
});
這段程式碼綁定全域的 contextmenu 事件監聽器,當事件發生時直接阻止預設動作。
為什麼用立即執行函式包裹?
使用立即執行函式 (IIFE) 可以避免全域變數污染,確保程式碼在嚴格模式下運行 ("use strict"),增加程式的穩定性與安全性。
實務應用與注意事項
- 此方法只禁止右鍵選單,不會影響左鍵點擊、文字選取或快捷鍵操作,對使用者體驗影響較小。
- 但此防護並非絕對安全,仍可被瀏覽器開發者工具或其他方式繞過,適合用於降低一般使用者誤操作。
- 若需更嚴格的內容保護,建議搭配其他前端或後端策略。
延伸優化方向
- 可針對特定元素綁定
contextmenu事件,避免全域禁用造成使用不便。 - 結合提示訊息告知使用者右鍵功能已被禁用,提高使用者理解。
完整程式碼
(function () {
"use strict";
// 只鎖右鍵選單(不影響左鍵、選字、快捷鍵)
document.addEventListener("contextmenu", function (e) {
e.preventDefault();
});
})();