1

Я задаю этот вопрос не веб-разработчику, а конечному пользователю.

Я использую несколько веб-сайтов (Google Drive, Evernote и т.д.), Которые имеют контекстное меню, которое активируется при щелчке правой кнопкой мыши. Однако в моем браузере (Firefox), если я щелкну правой кнопкой мыши, откроется контекстное меню моего навигатора поверх контекстного меню, реализованного веб-разработчиком (ями) веб-сайта. Если щелкнуть правой кнопкой мыши второй раз, контекстное меню навигатора исчезнет, оставив место для контекстного меню веб-приложения.

Как я, как конечный пользователь, могу отключить щелчок правой кнопкой мыши на определенных веб-сайтах? И, если возможно, я бы хотел иметь такую возможность «по требованию», т.е. иметь возможность реактивировать правые клики, когда захочу.

Есть ли для этого существующий аддон или трюки с JavaScript? И если нет, то в каком направлении я должен следовать, чтобы кодировать что-то вроде этого?

2 ответа2

2

Я не знаю каких-либо расширений для достижения этой цели, но создать их не составит труда. Вы можете использовать Add-on SDK, который проще всего использовать через Add-on Builder, который является веб-приложением для создания расширений на основе SDK. Модули 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;
    }
  }
});

Это действительно так просто - добавление этого обработчика событий в контекстное меню отключает его, удаление этого обработчика событий включает его снова. Расширение также переключает значки, чтобы указать его состояние. Вот и все. Конечно, если вы хотите сохранить состояние для каждой вкладки, вам потребуется более сложная логика. Удачи!

0

Перейдите на вкладку «Содержимое» в разделе «Инструменты»> «Параметры». Нажмите кнопку « Дополнительно ...» рядом с флажком « Включить JavaScript» . Откроется диалоговое окно «Дополнительные параметры JavaScript». Установите флажок « Отключить или заменить контекстные меню в представленном списке».

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .