Firefoxでウェブサイトによるキーボードショートカットの盗用を禁止する方法

firefox keyboard-shortcuts website

多くのウェブサイト、特にリッチテキスト編集に関わるものは全て(このサイトも罪深い)、Firefox を制御するために普通に使われるキーボードショートカットを盗み、代わりに何か別のことをさせています。Cmd-number, Cmd-L, Cmd-T, Cmd-K のようなものを押しても、私が望むようなことをしてくれないのは完全に腹立たしいです。どうにかして止めさせることはできませんか?

実際には、Cmd-*ショートカットを盗むことを禁止することができれば、それはおそらく最善の方法でしょう。何かの役に立つことに使われているのを見たことがありません。可能なのでしょうか?

  64  taw  2010-07-27


ベストアンサー

Greasemonkeyの新しい@run-atプロパティのおかげで、これが可能になりました!

このスクリプトこのスクリプト からインスピレーションを得て、キーボードショートカット Ctrl+TCtrl+S を正常に傍受するユーザースクリプトを作成しました。私はFirefox 17 ESRとFirefox 25でテストしました

// ==UserScript==
// @name           Disable Ctrl+s and Ctrl+t interceptions
// @description    Stop websites from highjacking keyboard shortcuts
//
// @run-at         document-start
// @include        *
// @grant          none
// ==/UserScript==

// Keycode for 's' and 't'. Add more to disable other ctrl+X interceptions
keycodes = [83, 84];

(window.opera ? document.body : document).addEventListener('keydown', function(e) {
// alert(e.keyCode ); //uncomment to find more keyCodes
if (keycodes.indexOf(e.keyCode) != -1 && e.ctrlKey) {
e.cancelBubble = true;
e.stopImmediatePropagation();
// alert("Gotcha!"); //ucomment to check if it's seeing the combo
}
return false;
}, !window.opera);

26  Martin J.H.  2013-11-05


バグが提出されてから11年、Mozillaはようやくこの人気のある機能要求に取り組むことができ、今は問題なく動作しているようです(Firefox 66.0.3/Ubuntuでテスト済み)

(FF59以降、設定がかなり難しくなっていることを指摘してくれた@PerJohanssonさんに感謝)

私はちょうどFirefox 75でテストし、いくつかの簡単な手順でこの答えを更新しました

以下に各ステップのスクリーンショットを掲載しています

  1. Ctrl-I (可能であれば) を押してページ情報ウィンドウを表示します
  2. Permissionsタブを選択します
  3. Override Keyboard Shortcutsの設定を調整します

最近(2020年4月)の各ステップのスクリーンショットをご紹介します

  1. マウスを使ってページ情報ウィンドウを開くと

Firefox context menu

  1. Permissionsタブを選択します

Firefox Page Info window

  1. パーミッションを適切に調整してください

Firefox Permissions tab

Mozilla の Page Info ウィンドウについての詳しい情報はこちらにあります

Firefox Page Info window | Firefox Help
The Firefox “Page Info” window gives you details about the page you're on. You can also use it to change permissions for the website.

そして、この修正の歴史に興味がある方は、関連するMozillaのチケットをご紹介します。https://bugzilla.mozilla.org/show_bug.cgi?id=380637https://bugzilla.mozilla.org/show_bug.cgi?id=1445942 です

15  Lambart  2018-04-26


広範な調査によると、Firefox の現在のバージョン (3.6.x) ではこれは不可能です – すべてのキーバインドの競合は優先順位で解決されます。システム > ウェブサイト > Firefox – これはかなり馬鹿げた順序です。私が試したアドオンはどれもこれを解決することができないようです

将来のバージョンでは可能になるかもしれませんが、今のところ答えは「不可能」です

5  taw  2010-08-05


問題はキープレスを盗むJavaScriptのキーボードイベントのようですので、これらのすべてのキーボードイベントをアンバインドして、ブラウザに各ショートカットの適切な使用法を返すJavaScriptスクリプト(Greasemonkeyを介して使用される)を構築することは可能ではないでしょうか?

私はこれがどのように実現可能であるかわからないが、より多くのJavaScript / Greasemonkeyの経験を持つ誰かが助けることができるかもしれない(SO上で尋ねる価値があるかもしれない)

5  DMA57361  2010-08-05


問題は、どのページでもキープレスイベントをつかむためのイベントハンドラを設定するJavascriptを実行することができ、Firefoxのjavascriptのコントロールは、他のjavascriptの機能を壊すことなくそれを止めるのに十分に細かく設定されていないということです

これを防ぐ唯一の方法は、Javascriptを無効にすることです(ツール -> オプション、[コンテンツ]タブ、[JavaScriptを有効にする]のチェックを外す)。または、NoScriptのような拡張機能を使用してサイトごとにJavascriptを無効にすることができます

Firefox では、ウィンドウの移動/サイズ変更、コンテキストメニューの変更や無効化などの Javascript の特定の使用を防ぐことができますが、Web サイトがキーボードイベントを傍受することを防ぐものは何もありません

多分、このレベルのコントロールを提供する拡張機能があるのでしょう – 私は知らない。 Javascript Options がありますが、その拡張機能はもう更新されていません

4  njd  2010-07-30


様々なブラウザでテストを重ねた結果、この「アプリ一体型キー」の中には「キーを押す」イベントでは迎撃しにくいものがあるため、キーがダウンしている(押されていない)時に迎撃しやすくなっています

ブラウザ間の互換性のあるスクリプトを思いつきました(マイクロソフトのIEではテストしていません)。いくつかのキーに対してブラウザが異なるコードを返すことに注意してください。私の場合は Ctrl+P を防ぎたかったのです

クロームではキー「P」はe.keyCode == 80、オペラではe.charCode == 16、ファイアフォックスではe.charCode == 112と表示されます

$(document).on('keydown', function(e) {
if(e.ctrlKey && (e.key == "p" || e.charCode == 16 || e.charCode == 112 || e.keyCode == 80) ){
alert("Please use the Print PDF button below for a better rendering on the document");
e.cancelBubble = true;
e.preventDefault();

e.stopImmediatePropagation();
}
});

jQueryを使ってみました

1  Peter  2015-06-08


サードパーティのプラグインがメインブラウザのウィンドウからフォーカスを奪っている可能性があります。その場合、キーボード入力(割り込みを除く)はプラグインに妨害されてしまいます。これが気に入らない場合は、常に問題のあるプラグインを削除することができます

0  Daisetsu  2010-07-27


おそらく、あなたはAutohotkeyやAutoit、それらのプログラムのいずれかを使用することができますし、あなたがホットキーのコンボを行うことができ、それらをFirefoxの機能にリンクすることができれば、言う

Ctrl-; T新規タブへ

Ctrl-; Nを新しいウィンドウに移動するなど

私はAutohotkeyやAutoitを使用する方法を知らないので、他の誰かがこれが動作する可能性があることを確認する必要があります、私は唯一の可能性のあるアイデアとしてこれを提供しています

0  Nathaniel Saxe  2010-08-05


もし、ウェブページに引き継がれるctrlキーを無効にしたい場合は、a-zからのすべての文字のコードをフィルタリングしてください(以前に受け入れられていた回答に基づいています)

// ==UserScript==
// @name           Disable Ctrl+key interceptions
// @description    Stop websites from highjacking keyboard shortcuts
//
// @run-at         document-start
// @include        *
// @grant          none
// ==/UserScript==

(window.opera ? document.body : document).addEventListener('keydown', function(e) {
//alert(e.keyCode ); //uncomment to find more keyCodes
if( e.ctrlKey && e.keyCode>=65 && e.keyCode<=90 ) {
e.cancelBubble = true;
e.stopImmediatePropagation();
}
return false;
}, !window.opera);

0  Steve Horvath  2017-12-17


Firefoxの現在のバージョンでは、私たちは “コンテキストメニューをハイジャックするjavascriptを無効にする “ことができます

ツール/オプション/コンテンツ/Javascriptの高度な機能/コンテキストメニューを無効にしたり、置換したりします

しかし、「キーボードショートカットを乗っ取るjavascriptを無効にする」機能はありません

ps.私はTwitterのウェブサイト、そのキーボードショートカットが私のシステムベースのキーボードショートカットと競合するのが嫌いです。J、K、L、I

bugzilla.mozilla.orgに機能リクエストをしましたので、コメントをお願いします。https://bugzilla.mozilla.org/show_bug.cgi?id=775002

-1  diyism  2012-07-18


タイトルとURLをコピーしました