Как отключить правый клик на определенных сайтах
Я задаю этот вопрос не веб-разработчику, а конечному пользователю.
Я использую несколько веб-сайтов (Google Drive, Evernote и т. Д.), Которые имеют контекстное меню, которое активируется при щелчке правой кнопкой мыши. Однако в моем браузере (Firefox), если я щелкну правой кнопкой мыши, он откроет контекстное меню моего навигатора поверх контекстного меню, реализованного веб-разработчиком веб-сайта. Если щелкнуть правой кнопкой мыши второй раз, контекстное меню навигатора исчезнет, оставив место для контекстного меню веб-приложения.
Как я, как конечный пользователь, могу отключить щелчок правой кнопкой мыши на определенных веб-сайтах? И если возможно, я бы хотел иметь такую возможность "по требованию", то есть иметь возможность повторно активировать правые клики, когда захочу.
Есть ли для этого существующий аддон или трюки с JavaScript? И если нет, то в каком направлении я должен следовать, чтобы кодировать что-то вроде этого?
3 ответа
Я не знаю каких-либо расширений для достижения этой цели, но создать их не составит труда. Вы можете использовать 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;
}
}
});
Это действительно так просто - добавление этого обработчика событий в контекстное меню отключает его, удаление этого обработчика событий включает его снова. Расширение также переключает значки, чтобы указать его состояние. Вот и все. Конечно, если вы хотите сохранить состояние для каждой вкладки, вам потребуется более сложная логика. Удачи!
Перейдите на вкладку "Содержимое" в разделе "Инструменты"> "Параметры". Нажмите кнопку " Дополнительно..." рядом с флажком " Включить JavaScript". Откроется диалоговое окно "Дополнительные параметры JavaScript". Установите флажок " Отключить или заменить контекстные меню в представленном списке".
К вашему сведению, для более новых версий FireFox (на случай, если кто-то пытается понять это, как я)
Пункт меню « Инструменты» > «Параметры» > «Содержимое» недоступен в новых версиях FireFox, таких как 78.9. Однако вы можете перейти к about:config и найти dom.event.contextmenu.enabled , установить для него значение True , и тогда веб-сайты смогут выборочно заменять контекстное меню, вызываемое правой кнопкой мыши.