JavaScript 實作禁止右鍵選單的簡易方法

前言

在某些網頁應用中,開發者可能希望防止使用者透過滑鼠右鍵開啟選單,以避免內容被輕易複製或操作。這段程式碼提供了一個簡單且不影響其他滑鼠功能的解決方案,適合有基礎 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();
    });
})();