アクセスしたページが選択したFirefoxショートカットキーを上書きしないようにするにはどうすればよいですか?


40

Firefoxで、キーごとにJavascriptを使用してFirefoxの組み込みキーボードショートカットをページが上書きできないようにするにはどうすればよいですか?サイトごとにもできますか?最もイライラするオーバーライドは、「ページ内検索」にリンクされているスラッシュ( '/')です。Google検索結果、Twitterタイムライン、一部のWiki、その他のページなどのサイトは、独自の検索ボックスのスラッシュキーを盗みますが、これはまったく間違っています。

担当者は質問を投稿、編集、および回答できますが、コメントは追加できないため、これは基本的に、適切に回答されなかったこれらの他の2つの質問の複製です。

キーボードショートカットを無効にするためにWebサイトを停止するには

Firefox:Webサイトが/(スラッシュ)キーを上書きすることを許可しない


1
ctrl- <左矢印>をオーバーライドするPHPMyAdminにイライラします...これは良い質問です
非常に不規則な

1
デフォルトの動作をオーバーライドするWebサイトは我慢できません。多くの場合、ミドルクリックも使用します。その問題の解決策については、この関連する質問を参照してください。
カムジャクソン

回答:


12

edymttの答えに基づいて、特定のキーボードショートカットのみを無効にするユーザースクリプトを作成しました。キーコードをキーコード配列に追加することで、ショートカットを追加して無効にしたり、@includeタグを1つ以上のパターンに置き換えて、適用するサイトを制限したりできます。

Greasemonkeyを使用してインストールします

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

keycodes = [191] // Keycode for '/', add more keycodes to disable other key captures

document.addEventListener('keydown', function(e) {
//    alert(e.keyCode); //uncomment to find out the keycode for any given key
    if (keycodes.indexOf(e.keyCode) != -1)
    {
        e.cancelBubble = true;
        e.stopImmediatePropagation();
    }
    return false;
});

2
驚くばかり!メタキーのほぼ完全なソリューションも、--- GoogleドキュメントがPrevious-tab(Cmd + Left)およびNext-tab(Cmd + Right)をインターセプトしないようにしようとしていたので、useCaptureをtrueに設定する必要もありました。すなわち、document.addEventListener( 'keydown'、yourHandlerFn、true)
chbrown 14年

1
191私のazertyセットアップに関する限り、値はキーボードレイアウトに依存することに注意してください(アルファエリアに16 + 58、テンキーに111があります)
-sylvainulg

2
残念ながら、最近はもう動作しません(phabricatorとtwitterでテスト済み)。カスタムリスナーはトリガーされますが、サイトのイベントはとにかくトリガーされ、「ページ内検索」は表示されません。
シルベヌル

1
@sylvainulg Twitterでは動作しませんが、少なくともGitHubでは動作します。何が変わったのだろうか。
ビンキ

これは、php.netを除くすべての場所で機能します。彼らはどんなイベントを使っているのだろうか。
qwazix

8

Googleとクイックファインドショートカットに関しては、次のGreasemonkeyスクリプトをインストールできます。

http://userscripts-mirror.org/scripts/show/132237

説明にあるように、「グーグルがキーを押すたびに検索入力にフォーカスするのをやめます」-特に、/検索ボックスの外側でキーボードフォーカスを押すと、他のWebサイトのようにクイックファインドが表示されます。

コードに触れずにインストールしただけですが、他のサイトやショートカットで動作するように簡単に適応できると思います。


明確にするために、このユーザースクリプトは、それが有効になっているページ上のすべてのキーボードショートカットを停止し、ブラウザ自体の機能を維持します。他のWebサイトに適用するには、さらに@includeタグを追加します。
MikeFHay

リンクの背後に何が隠れているかについての情報がなければ、残念ながらuserscripts-mirror.orgがダウンしたり、ファイアウォールなどでブロックされたりした場合、答えは役に立たない。
シルヴァングル

8

Firefox 58以降では、Webサイトごとにキーボードショートカットのオーバーライドを無効にすることができます。

「キーボードショートカットの上書き」およびその他の多くの権限は、「ページ情報->権限」(URLバーの情報アイコンの下)で利用できます。

superuser.comのFirefoxの許可の例

Firefoxでキーボードオーバーライドが導入されました#380637


1
はい、11年後、彼らはついにそのチケットを修正する半ばばかげた仕事をしました。残念ながら、現在の実装(まだFF 59にBackspaceありDeleteます)では、とキーを完全に無効にします。
ランバート

6
また、残念ながら、Webページがシフトされていない(つまり、no CtrlShiftまたはAltキー)入力をキャプチャするのを防ぐことはできません。つまり、元の質問で言及されたスラッシュキーではまったく役に立ちません。
ランバート

@Lambart - FirefoxのキーボードショートカットはJIRAとConfluence(Firefoxの59の周りのどこか)に固定となりましたので、知っておくとよい、私は、あまりにもこれを使用していないことになった
アレック・イストミン

2
何が修正されましたか?JIRAとConfluenceはいずれも、ワークフローを絶えず中断させるあらゆる種類のキーを保持しています。私はこれをアトラシアンの問題と考えています。彼らは、人々が「ショートカット」を無効化(および/または変更)できるようにする必要があります。
ランバート

firefox bugzilla.mozilla.org/show_bug.cgi?id=1433592私のためにアトラシアン製品を修正しました(同じ時間枠でアトラシアンの修正があったかもしれません)
Alec Istomin

0

より一般的なスクリプトを次に示します。無効にするキー押下イベントをいくつでも定義できます。

https://greasyfork.org/en/scripts/5819-disable-website-keyboard-hooks

// ==UserScript==
// @name           Disable website keyboard hooks
// @description    Stop websites from hijacking keyboard shortcuts.
// @author         Isaac Levy
// @run-at         document-start
// @include        *
// @grant          none
// @version        0.0.1
// @namespace      https://isaacrlevy.com
// ==/UserScript==

var keycodes = [ // Add keycodes as desired, keep sorted.
    37, 38, 39, 40 // Arrow keys.
]

var meta_keycodes = [ // Disable these when meta key is pressed.
    70
];

// Don't change below this line.

var isMac = navigator.platform.toLowerCase().indexOf('mac') >= 0;

// Create a fast lookup.
// This saves work during normal typing. Maybe unnecessary.
var keycode_offset = keycodes[0];
var keycode_arr = Array(keycodes[keycodes.length - 1] - keycode_offset)
for (var i = 0, len = keycodes.length; i < len; i++) {
    keycode_arr[keycodes[i] - keycode_offset] = true;
}

document.addEventListener('keydown', function(e) {
    //console.log(e);
    if ((isMac && e.metaKey) || (!isMac && e.ctrlKey)) {
        if (meta_keycodes.indexOf(e.keyCode) >= 0) {
            e.stopImmediatePropagation();
        }
    } else if (keycode_arr[e.keyCode - keycode_offset]) {
        e.stopImmediatePropagation();
    }
    return false;
});

申し訳ありませんが、これを機能させることはできません。特に、サイトの左右の矢印キーを無効にしたいのですが、このスクリプトでは、矢印キーでサイトを制御できますか?
クリスチャンヘレンツ

-3

YesScriptアドオンは、手間のかからないソリューションでした。サイトがJavaScriptを実行するのを防ぎますが、選択したサイトのみが実行されます。ほとんどの場合、これらのサイトはJavaScriptによってキーボードショートカットをハイジャックします。Ghacks.netのこの記事でそれについて知りました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.