62

I despise web sites that hijack my right mouse button via javascript. Other browsers ( like firefox) allow me to block sites from doing this. Does chrome have such an option, or does it leave me at the mercy of annoying web site designers?

I don't want to turn off javascript completely. I just want to block javascript from taking over my right mouse button. Firefox lets you stop javascript from doing specific things like this. I am trying to find out if Chrome does as well. I am going to assume it does not at this point.

mit
  • 1,594
Peter
  • 803

10 Answers10

23

Try this Chrome extension, it specifically stops websites from blocking the right click button.

Enable Right Click

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

cmbuckley
  • 124
20

Press F12 to bring Google Chrome Developers Tools out and navigate to Console tab and run below command:

document.oncontextmenu=null;

It should bring most of the context menu back.

It should work for Firefox as well.

Of course on Firefox you could just use Shift + right-click to bypass the JS context menu.

Run5k
  • 16,463
  • 24
  • 53
  • 67
Shi B.
  • 344
  • 2
  • 6
6

Try

ctrl+shift+rightclick

Seems this action will invoke the native context menu.

My chrome version is 84

4

This bookmarlet works in Google sites/Youtube as of Aug 2019 (tested in Chrome and 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();

For peskier sites, set/pass aggressive to true (this will disable most event handlers and hence disable interaction with the page):

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();
Chema
  • 466
4

Firefox

ctrl+shift+rightclick.

This will show the context menu.

Chrome

Paste this to the console (F12) and press Enter:

document.addEventListener("contextmenu", (e)=>e.stopPropagation(), true);

Then right-click on the page.

4

I found an acceptable solution, from About.com. It's a small bookmarklet, which by nature must be clicked to force disable this particular annoying JS. However I find it better than the Firefox style option, as many sites need right-click controlling JS. For example Google Docs etc...

At least I don't need to waste resources storing an additional extension in memory. You can watch how chrome stores extensions with its task-manager, of coarse you need an extension installed to watch.

tomasz86
  • 107
J. M. Becker
  • 641
  • 6
  • 15
2

I use NotScripts

EDIT:

I have switched to ScriptNo, which has more granular control

Moab
  • 58,769
0

This works on my OS X Chrome Version 88.0.4324.96: open chrome://flags/#hardware-media-key-handling and set to Disabled.

-1

Building on Shi B. solution I got a reliable way of solving the problem on Google Chrome.

(1) Get custom-javascript-for-web plugin for Chrome.

(2) Paste document.oncontextmenu=null; into the plugin's console.

Works like a charm.

Karolis
  • 99
-3

You can easily enable/disable or allow/block javascript on any website in Google chrome. Just click on paper sign before the site url. Under permisions you will see javescript, click down arrow you will see a menu, select "Always block on this site" and reload web page so changes can take effect.

Hope this will help.

Here is link to image.

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