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.
9 Answers
Try this Chrome extension, it specifically stops websites from blocking the right click button.
Enable Right Click
9Press 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.
7I 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.
1Try
ctrl+shift+rightclick
Seems this action will invoke the native context menu.
My chrome version is 84
5I use NotScripts
EDIT:
I have switched to ScriptNo, which has more granular control
5This 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(); This works on my OS X Chrome Version 88.0.4324.96:
open chrome://flags/#hardware-media-key-handling and set to Disabled.
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.
3You 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.
1