JavaScriptが右クリックメニューをハイジャックできないようにGoogle Chromeを設定するにはどうすればよいですか


45

JavaScriptを使用してマウスの右ボタンをハイジャックするWebサイトを軽deしています。他のブラウザ(firefoxなど)では、これを行うサイトをブロックできます。クロムにはそのようなオプションがありますか、それとも迷惑なウェブサイトデザイナーの慈悲に任せられますか?

JavaScriptを完全にオフにしたくありません。javascriptがマウスの右ボタンを引き継ぐのをブロックしたいだけです。Firefoxを使用すると、javascriptがこのような特定のことを行うのを停止できます。Chromeも同様かどうかを確認しようとしています。この時点ではそうではないと仮定します。

回答:


17

このChrome拡張機能を試してください。具体的には、ウェブサイトが右クリックボタンをブロックするのを防ぎます。

右クリックを有効にする

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


これは有望に見えます!
ピーター

4
本当に残念なことに、クロームはこれを拡張する必要がありますが、問題は解決します。回答を投票しましたが、さらに良い解決策を探しています。
JMベッカー

これは魅力的でした。独自の拡張機能を作成する準備ができていました。研究のためにイェーイ。
ティル

7
@カールモリソン:あなたは私の批判を誤解しているかもしれないと思う、私は右クリックメニューを無効にするためにクロムを批判していなかった。chromeがJavascript機能を選択的に無効にする方法を提供していないことにイライラしました。また、JavaScriptを無効にすると、多くのサイトが機能しなくなります。Firefoxには、「コンテキストメニューの無効化または置換」Javascriptオプションがあります。
JMベッカー

1
@アレクサンダー、動作しません。Chromeブラウザを使用してGoogleドキュメントでテスト済み。
Pacerier

14

を押しF12てGoogle Chrome開発者ツールをConsole表示し、タブに移動して次のコマンドを実行します。

document.oncontextmenu=null;

ほとんどのコンテキストメニューが表示されます。

Firefoxでも動作するはずです。

もちろん、FirefoxではShift+右クリックを使用してJSコンテキストメニューをバイパスできます。


7
動作しません。Chromeブラウザを使用してGoogleドキュメントでテスト済み。
Pacerier

@Pacerier GoogleがGoogleでどのようなブードゥーマジックをキャストしたのかわかりません。oncontextmenuを利用していないため、私のソリューションは機能しません。ただし、私が言及した他の方法はChromeでも機能するはずです。Shift+右クリックを使用して元のコンテキストメニューを表示します。
市B.

私にはうまくいきません。
ベンウィーラー

1
対抗するには、コメントを「動作しない」 -これは、すべてのウェブサイトのための仕事、それはないかもしれない作業を行いますが、@市-Bからの答えは...仕事をする
ロバート・スウィフト

contextmenu eventlistenerがどのdom要素にアタッチされたかに依存します。多くの場合、ドキュメントになりますが、任意の要素に添付できます。
スコットクリストファーソン

4

About.comから許容可能なソリューションを見つけました。それは小さなブックマークレットであり、この特定の迷惑なJSを強制的に無効にするには、本質的にクリックする必要があります。ただし、多くのサイトでは右クリックでJSを制御する必要があるため、Firefoxスタイルのオプションよりも優れていると思います。たとえば、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 notscriptsは実際にはさらに悪いです。どちらも手動による介入を必要とし、基本的にはドメインごとにJSを完全に有効/無効にします。きめの細かい特定のJS DOMの無効化の問題を解決したい場合、両方とも十分ではありません。歯の皮によってですが、それは私の下票を避けるのにちょうど良いです。
JMベッカー

@TechZillaは上記の編集内容を確認します
モアブ

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();

ペスキエサイトの場合、aggressiveを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の任意のWebサイトでJavaScriptを簡単に有効化/無効化または許可/ブロックできます。サイトのURLの前にある紙のサインをクリックするだけです。パーミションの下でjavescriptが表示され、下矢印をクリックしてメニューが表示されます。[このサイトで常にブロック]を選択し、Webページをリロードして変更を有効にします。

これが役立つことを願っています。

こちらが画像へのリンクです。

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


2
すべてのJavaScriptをブロックしようとはしていません。javascriptがマウスの右クリックを傍受するのをブロックしたいだけです。一部のブラウザには、そのオプションがあります。
ピーター


-1

Shi B.ソリューションの構築Google Chromeで問題を解決する信頼できる方法を得ました。

(1)Chrome 用のcustom-javascript-for-webプラグインを取得します。

(2)document.oncontextmenu=null;プラグインのコンソールに貼り付けます。

魔法のように機能します。


(これは古いことは知っていますが、好奇心m盛です)なぜ世界でこれにデフォルトのコンソールの代わりにそれを使用するのですか?私には、まったく同じことを達成するのが難しい方法のように見えます。
デニスクロージャー

1
私の場合、同じWebサイト(Dropbox Paper)に戻っていました。そのため、1つのWebサイトでそのスクリプトが自動的に実行されました。幸いなことに、会社はそれを修正しました
カロリス

document.oncontextmenu=null;chromeのsheets.google.comでは機能しません。
xaxxon
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.