Как настроить Google Chrome, чтобы не позволять javascript захватывать мое правое меню

45

Я презираю веб-сайты, которые угоняют мою правую кнопку мыши через JavaScript. Другие браузеры (например, Firefox) позволяют мне блокировать сайты от этого. Есть ли у Chrome такая опция, или она оставляет меня во власти раздражающих дизайнеров веб-сайтов?

Я не хочу полностью отключать JavaScript. Я просто хочу заблокировать JavaScript, чтобы захватить мою правую кнопку мыши. Firefox позволяет вам запретить JavaScript делать такие вещи, как это. Я пытаюсь выяснить, работает ли Chrome. Я собираюсь предположить, что это не так на данный момент.

Питер
источник

Ответы:

17

Попробуйте это расширение Chrome, оно специально запрещает веб-сайтам блокировать правую кнопку мыши.

Включить правый клик

https://chrome.google.com/webstore/detail/enable-right-click/hhojmcideegachlhfgfdhailpfhgknjm

Александр Лай
источник
это выглядит многообещающе!
Питер
4
Это действительно разочаровывает, хром требует расширения для этого, но это действительно решает проблему. Проголосовал ответ, но все равно ищу лучшее решение.
Дж. М. Беккер
Это работает как шарм. Я готовился построить свое собственное расширение. Yay для исследований.
до
7
@ Карл Моррисон: Я думаю, что вы, возможно, неправильно поняли мою критику, я не критиковал Chrome за отключение меню правой кнопки мыши. Меня раздражало, что Chrome не предоставляет метод выборочного отключения функций Javascript. Также хочу упомянуть, что отключение JavaScript сделает многие сайты нефункциональными. Firefox предоставляет опцию Javascript «Отключить или заменить контекстные меню».
Дж. М. Беккер
1
@ Александр, не работает. Протестировано в Документах Google с использованием браузера Chrome.
Pacerier
14

Нажмите, F12чтобы открыть Инструменты разработчика Google Chrome, перейдите на Consoleвкладку и выполните команду ниже:

document.oncontextmenu=null;

Это должно вернуть большую часть контекстного меню.

Это должно работать и для Firefox.

Конечно, в Firefox вы можете просто использовать Shift+ правый клик, чтобы обойти контекстное меню JS.

Ши Б.
источник
7
Не работает Протестировано в Документах Google с использованием браузера Chrome.
Pacerier
@Pacerier Я не знаю, какую магию вуду Google применил к Документам, она не использует oncontextmenu, и поэтому мое решение не работает. Однако другой метод, который я упомянул, должен работать и в Chrome, используйте Shift + щелчок правой кнопкой мыши, чтобы открыть исходное контекстное меню.
Ши Б.
Не работает для меня
Бен Уилер
1
Чтобы противостоять комментариям "не работает" - это работает, это может не работать для каждого веб-сайта, но ответ от @ shi-b работает ...
Роберт Свифт,
Это будет зависеть от того, к какому элементу dom был прикреплен eventlistener contextmenu. Часто это будет документ, но он может быть прикреплен к любому элементу.
Скотт Кристоферсон
4

Я нашел приемлемое решение от About.com . Это небольшой букмарклет, который по своей природе нужно щелкнуть, чтобы принудительно отключить этот раздражающий JS. Однако я нахожу это лучше, чем опция стиля Firefox, так как многие сайты нуждаются в управлении JS правой кнопкой мыши. Например, Google Docs и т. Д.

По крайней мере, мне не нужно тратить ресурсы на хранение дополнительного расширения в памяти. Вы можете посмотреть, как Chrome хранит расширения с помощью своего диспетчера задач, и, конечно, вам нужно установить расширение для просмотра.

Дж. М. Беккер
источник
Код есть javascript:void(document.onmousedown=null);void(document.onclick=null);void(document.oncontextmenu=null). К сожалению, это не работает для меня в Netflix с Google Chrome. Но chrome.google.com/webstore/detail/allow-right-click/… сработало .
Аарон Тома
2

Я использую NotScripts

РЕДАКТИРОВАТЬ:

Я перешел на ScriptNo , который имеет более детальный контроль

Moab
источник
1
Позволяет ли это вам контролировать то, что javascript может и не может делать на странице, или он просто полностью блокирует javascript?
Питер
Он блокирует js по доменам, каждый домен выбирается вами, зависит от того, что вы подразумеваете под хищением вашего правого клика, вы имеете в виду, что это меняет ваше контекстное меню?
Моав
3
да. я хочу, чтобы возможность запретить JavaScript использовать события щелчка мыши, которые приходят от моей правой кнопки мыши.
Питер
Другое решение нон грата, но большой шаг выше полностью отключил JS. Я использовал FireFox noscript, который все еще трудно использовать, но Chrome notscript на самом деле еще хуже. Они оба требуют ручного вмешательства и в основном просто полностью включают / отключают JS для каждого домена. Если вы хотите решить проблему с детальным отключением JS DOM, то и того, и другого недостаточно. Хотя по коже зубов это достаточно хорошо, чтобы избежать моего пониженного голоса.
Дж. М. Беккер,
@TechZilla проверьте мои изменения выше
Моав
0

Этот букмарлет работает на сайтах Google / Youtube по состоянию на август 2019 года (проверено в Chrome и Firefox):

javascript: function enableContextMenu(aggressive = false) { void(document.ondragstart=null); void(document.onselectstart=null); void(document.onclick=null); void(document.onmousedown=null); void(document.onmouseup=null); void(document.body.oncontextmenu=null); enableRightClickLight(document); if (aggressive) { enableRightClick(document); removeContextMenuOnAll("body"); removeContextMenuOnAll("img"); removeContextMenuOnAll("td"); } } function removeContextMenuOnAll(tagName) { var elements = document.getElementsByTagName(tagName); for (var i = 0; i < elements.length; i++) { enableRightClick(elements[i]); } } function enableRightClickLight(el) { el || (el = document); el.addEventListener("contextmenu", bringBackDefault, true); } function enableRightClick(el) { el || (el = document); el.addEventListener("contextmenu", bringBackDefault, true); el.addEventListener("dragstart", bringBackDefault, true); el.addEventListener("selectstart", bringBackDefault, true); el.addEventListener("click", bringBackDefault, true); el.addEventListener("mousedown", bringBackDefault, true); el.addEventListener("mouseup", bringBackDefault, true); } function restoreRightClick(el) { el || (el = document); el.removeEventListener("contextmenu", bringBackDefault, true); el.removeEventListener("dragstart", bringBackDefault, true); el.removeEventListener("selectstart", bringBackDefault, true); el.removeEventListener("click", bringBackDefault, true); el.removeEventListener("mousedown", bringBackDefault, true); el.removeEventListener("mouseup", bringBackDefault, true); } function bringBackDefault(event) { event.returnValue = true; (typeof event.stopPropagation === 'function') && event.stopPropagation(); (typeof event.cancelBubble === 'function') && event.cancelBubble(); } enableContextMenu();

Для надоедливых сайтов установите / передайте агрессивное значение true (это отключит большинство обработчиков событий и, следовательно, отключит взаимодействие со страницей):

javascript: function enableContextMenu(aggressive = true) { void(document.ondragstart=null); void(document.onselectstart=null); void(document.onclick=null); void(document.onmousedown=null); void(document.onmouseup=null); void(document.body.oncontextmenu=null); enableRightClickLight(document); if (aggressive) { enableRightClick(document); removeContextMenuOnAll("body"); removeContextMenuOnAll("img"); removeContextMenuOnAll("td"); } } function removeContextMenuOnAll(tagName) { var elements = document.getElementsByTagName(tagName); for (var i = 0; i < elements.length; i++) { enableRightClick(elements[i]); } } function enableRightClickLight(el) { el || (el = document); el.addEventListener("contextmenu", bringBackDefault, true); } function enableRightClick(el) { el || (el = document); el.addEventListener("contextmenu", bringBackDefault, true); el.addEventListener("dragstart", bringBackDefault, true); el.addEventListener("selectstart", bringBackDefault, true); el.addEventListener("click", bringBackDefault, true); el.addEventListener("mousedown", bringBackDefault, true); el.addEventListener("mouseup", bringBackDefault, true); } function restoreRightClick(el) { el || (el = document); el.removeEventListener("contextmenu", bringBackDefault, true); el.removeEventListener("dragstart", bringBackDefault, true); el.removeEventListener("selectstart", bringBackDefault, true); el.removeEventListener("click", bringBackDefault, true); el.removeEventListener("mousedown", bringBackDefault, true); el.removeEventListener("mouseup", bringBackDefault, true); } function bringBackDefault(event) { event.returnValue = true; (typeof event.stopPropagation === 'function') && event.stopPropagation(); (typeof event.cancelBubble === 'function') && event.cancelBubble(); } enableContextMenu();
Чема
источник
-1

Вы можете легко включить / отключить или разрешить / заблокировать JavaScript на любом веб-сайте в Google Chrome. Просто нажмите на бумажный знак перед URL сайта. Под разрешениями вы увидите javescript, нажмите стрелку вниз, вы увидите меню, выберите «Всегда блокировать на этом сайте» и перезагрузите веб-страницу, чтобы изменения вступили в силу.

Надеюсь, это поможет.

Вот ссылка на изображение.

https://www.facebook.com/photo.php?fbid=10201389704683447&l=5294c0075e

Таир Таус
источник
2
Я не пытаюсь заблокировать весь JavaScript. Я только хочу, чтобы JavaScript не перехватывал щелчки правой кнопкой мыши. Некоторые браузеры предоставляют вам такую ​​возможность.
Питер
-1

Я нашел это расширение Chrome RightToCopy

это позволяет щелкнуть правой кнопкой мыши и выбрать и скопировать текстовую функцию с сайтов.

JerryGoyal
источник
-1

Опираясь на решение Ши Б., я получил надежный способ решения проблемы в Google Chrome.

(1) Получите пользовательский плагин javascript для веб-сайта для Chrome.

(2) Вставьте document.oncontextmenu=null;в консоль плагина.

Работает как шарм.

Karolis
источник
(Я знаю, что это старый, но мне слишком любопытно, чтобы это было так). Почему в мире вы использовали бы это вместо консоли по умолчанию для этого? Для меня это выглядит как более сложный способ достичь того же самого.
Деннис Крёгер
1
в моем случае я возвращался на тот же сайт (Dropbox Paper). Таким образом, автоматически выполнялся этот скрипт для одного сайта. К счастью, компания исправила это
Karolis
document.oncontextmenu=null;не работает на sheet.google.com в Chrome.
xaxxon