如何禁用某些网站的右键单击

如何禁用某些网站的右键单击

我不是以网络开发人员的身份问这个问题,而是以最终用户的身份问这个问题。

我正在使用几个网站(Google Drive、Evernote 等),这些网站都有在右键单击事件时激活的上下文菜单。但是,在我的浏览器(Firefox)上,如果我右键单击,它会在网站 Web 开发人员实现的上下文菜单之上打开我的导航器上下文菜单。如果我再次右键单击,则导航器上下文菜单会消失,为 Web 应用程序上下文菜单留出空间。

作为最终用户,我如何才能禁用特定网站上的右键单击?如果可能的话,我希望可以“按需”实现此功能,即能够在需要时重新激活右键单击。

是否有现成的插件或 JavaScript 技巧可用于此目的?如果没有,我应该遵循哪个方向来编写这样的代码?

答案1

我不知道有任何扩展可以实现这一点,但创建一个并不难。您可以使用附加 SDK,最容易通过 Add-on Builder 使用,这是一个用于创建基于 SDK 的扩展的 Web 应用程序。高级 SDK 模块不允许您直接访问浏览器窗口,但是,您必须使用未记录的模块来window-utils实现这一点。以下代码有效main.js

var icons = {
  "enabled": "http://www.mozilla.org/favicon.ico",
  "disabled": "http://www.mozilla.org/media/img/favicon.ico"
};

function disableContextMenu(event)
{
  event.preventDefault();
}

require("widget").Widget({
  id: "disable-context-menu",
  label: "Disable Context Menu",
  contentURL: icons.enabled,
  onClick: function(view)
  {
    var window = require("window-utils").activeBrowserWindow;
    var menu = window.document.getElementById("contentAreaContextMenu");
    if (this.contentURL == icons.enabled)
    {
      menu.addEventListener("popupshowing", disableContextMenu, false);
      this.contentURL = icons.disabled;
    }
    else
    {
      menu.removeEventListener("popupshowing", disableContextMenu, false);
      this.contentURL = icons.enabled;
    }
  }
});

其实就是这么简单 - 将此事件处理程序添加到上下文菜单会禁用它,删除该事件处理程序会将其重新打开。扩展还会切换图标以指示其状态。就是这样。当然,如果您想保留每个选项卡的状态,那么您将需要更复杂的逻辑。祝你好运!

答案2

转到“工具”>“选项”下的“内容”选项卡。单击先进的...按钮旁边启用 JavaScript复选框。这将打开“高级 JavaScript 设置”对话框。切换复选框选项禁用或替换上下文菜单在所呈现的列表中。

答案3

仅供参考,对于较新版本的 FireFox(以防有人像我一样试图解决这个问题)

菜单选项工具 > 选项 > 内容在较新的 FireFox 版本(如 78.9)上不可用。但是,您可以访问关于:配置并搜索dom.event.contextmenu.enabled,将其设置为真的然后网站可以有选择地替换右键单击上下文菜单。

相关内容