如何将Google Chrome设置为不允许javascript劫持我的右键菜单


45

我鄙视那些通过JavaScript劫持我的鼠标右键的网站。其他浏览器(例如firefox)允许我阻止网站执行此操作。chrome是否有这样的选择,还是让我受烦于网站设计师的摆布?

我不想完全关闭javascript。我只想阻止javascript接管我的鼠标右键。Firefox使您可以阻止javascript执行此类特定操作。我正在尝试确定Chrome是否也可以。我要假设它目前还没有。

Answers:


17

尝试使用此Chrome扩展程序,它可以专门阻止网站阻止右键单击按钮。

启用右键

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


这看起来很有希望!
彼得

4
chrome确实令人失望,需要对此进行扩展,但确实可以解决该问题。投票赞成,但仍在寻找更好的解决方案。
JM Becker 2012年

这就像一个魅力。我正准备构建自己的扩展程序。可以研究。
直到2012年

7
@Karl Morrison:我认为您可能误解了我的批评,我并不是批评chrome禁用了右键菜单。chrome没有提供有选择地禁用Javascript函数的方法,这让我很生气。还想提到的是,禁用JavaScript会导致许多网站无法正常运行。Firefox提供了“禁用或替换上下文菜单” JavaScript选项。
JM Becker

1
@亚历山大,行不通。使用Chrome浏览器在Google文档上进行了测试。
Pacerier '16

14

按此F12按钮可将Google Chrome开发者工具带出,并导航至Console选项卡并运行以下命令:

document.oncontextmenu=null;

它应该带回大多数上下文菜单。

它也应该适用于Firefox。

当然,在Firefox上,您可以使用Shift+右键单击来绕过JS上下文菜单。


7
不起作用 使用Chrome浏览器在Google文档上进行了测试。
Pacerier '16

@Pacerier我不知道Google在Docs上使用了什么巫毒术,它没有利用oncontextmenu,因此我的解决方案不起作用。但是,我提到的另一种方法也应在Chrome下运行,请使用Shift +右键单击以显示原始上下文菜单。
Shi B.

对我不起作用。
本·惠勒

1
为了应对“无效”的评论-确实有效,它可能不适用于每个网站,但是@ shi-b的答案确实有效...
Robert Swift

这取决于contextmenu eventlistener附加到哪个dom元素。通常它将是文档,但可以附加到任何元素。
斯科特·克里斯托弗森

4

我从About.com找到了可以接受的解决方案。这是一个小书签,必须单击以强制禁用此特殊的烦人的JS。但是,我发现它比Firefox样式选项更好,因为许多站点都需要右键单击来控制JS。例如Google文档等...

至少我不需要浪费资源在内存中存储其他扩展。您可以通过其任务管理器观看chrome如何存储扩展程序,大致来说,您需要安装扩展程序才能观看。


代码是javascript:void(document.onmousedown=null);void(document.onclick=null);void(document.oncontextmenu=null)。不幸的是,它不适用于使用Google Chrome浏览器的Netflix。但是chrome.google.com/webstore/detail/allow-right-click / ... 起作用了
亚伦·托马

2

我使用NotScripts

编辑:

我已经切换到ScriptNo,它具有更精细的控制


1
这样可以控制页面上哪些JavaScript可以执行或不能执行哪些操作,还是可以完全阻止javascript?
彼得

它按域阻止js,您可以选择每个域,具体取决于您劫持鼠标右键的含义,是否意味着它会更改上下文菜单?
摩押

3
是。我希望能够阻止javascript使用来自我的鼠标右键的鼠标单击事件。
彼得

另一个解决方案不是免费的,但在完全禁用JS之上又是一大进步。我使用了FireFox Noscript,它仍然很难使用,但是Chrome notscript实际上更糟。它们都需要手动干预,并且基本上只在每个域中完全启用/禁用JS。如果要解决该问题,请禁用特定的特定JS DOM,这两者都不足够。尽管通过牙齿的皮肤,它足以避免我的沮丧。
JM Becker 2012年

@TechZilla在上方检查我的编辑
摩押(Moab)

0

该手册自2019年8月起在Google网站/ Youtube中有效(已在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();

对于peskier网站,请将“积极”设置/传递为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

您可以在Google chrome中的任何网站上轻松启用/禁用或允许/阻止javascript。只需点击网站网址前的纸签即可。在权限下,您将看到javescript,单击向下箭头将看到一个菜单,选择“始终在此站点上阻止”并重新加载网页,以使更改生效。

希望这会有所帮助。

这是图像的链接。

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


2
我不是要阻止所有的javascript。我只想阻止javascript拦截鼠标右键。一些浏览器为您提供该选项。
彼得


-1

在Shi B.解决方案的基础上,我找到了在Google Chrome上解决问题的可靠方法。

(1)获取Chrome 的针对网络的自定义javascript插件。

(2)粘贴document.oncontextmenu=null;到插件的控制台中。

奇迹般有效。


(我知道这很老了,但我很好奇,不能让它成为现实)为什么在世界上您会使用它代替默认的控制台?对我来说,这似乎是实现完全相同的一种更困难的方法。
丹尼斯·克鲁格(DennisKrøger)

1
就我而言,我回到了同一网站(Dropbox Paper)。因此,它会自动为一个网站执行该脚本。幸运的是,公司
已将

document.oncontextmenu=null;不适用于Chrome中的sheets.google.com。
xaxxon
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.