방문한 페이지가 선택한 Firefox 바로 가기 키를 재정의하지 못하게하려면 어떻게합니까?


40

Firefox에서 페이지별로 Javascript를 통해 Firefox 내장 키보드 단축키를 키별로 재정의하지 못하게하려면 어떻게해야합니까? 바람직하게는 사이트 단위로? 가장 실망스러운 재정의는 "페이지에서 찾기"에 연결된 슬래시 ( '/')입니다. Google 검색 결과, Twitter 타임 라인, 일부 위키 및 기타 페이지와 같은 사이트는 자체 검색 창에 슬래시 키를 훔칩니다. 이는 완전히 잘못된 것입니다.

내 담당자가 질문을하고, 편집하고, 답변 할 수 있지만 설명을 추가 할 수는 없으므로 기본적으로 제대로 답변되지 않은 다른 두 질문과 중복됩니다.

키보드 단축키를 무시하기 위해 웹 사이트를 중지하는 방법

Firefox : 웹 사이트가 / (슬래시) 키를 재정의하도록 허용하지 않습니다


1
나는 phpMyAdmin을 좌절 얻을 최우선 CTRL- <왼쪽 화살표> ... 그것은 좋은 질문
고 불규칙한

1
기본 동작을 재정의하는 웹 사이트를 견딜 수 없습니다. 가운데 클릭만으로도 많은 일을 할 수 있습니다. 해당 문제 에 대한 해결책 은 이 관련 질문 을 참조하십시오 .
Cam Jackson

답변:


12

edymtt의 답변을 바탕으로 특정 키보드 단축키 만 비활성화하는 사용자 스크립트를 만들었습니다. 키 코드 를 키 코드 배열 에 추가하여 비활성화 할 바로 가기를 더 추가 하거나 @include태그를 하나 이상의 패턴 으로 교체하여 적용 할 사이트를 제한 할 수 있습니다 .

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 문서 도구에서 이전 탭 (Cmd + Left) 및 다음 탭 (Cmd + Right)을 가로 채지 않으려 고했으며 useCapture도 true로 설정해야한다는 것을 알았습니다. 즉, document.addEventListener ( 'keydown', yourHandlerFn, true)
chbrown

1
191아제르 바이스 설정에 관한 한 값 은 키보드 레이아웃에 따라 다릅니다 (알파 영역은 16 + 58, 숫자 키패드는 111)
sylvainulg

2
불행히도 요즘 더 이상 작동하지 않습니다 (phabricator 및 twitter에서 테스트 됨). 사용자 정의 리스너는 트리거되지만 사이트의 이벤트는 어쨌든 트리거되며 '페이지에서 검색'이 표시되지 않습니다.
sylvainulg

1
@sylvainulg 트위터에서는 작동하지 않지만 적어도 GitHub에서는 작동한다는 것을 알았습니다. 무엇이 바뀌 었는지 궁금합니다.
binki

이것은 php.net을 제외하고 시도한 모든 곳에서 작동합니다. 그들이 어떤 이벤트를 사용하고 있는지 궁금합니다.
qwazix

8

Google 및 빠른 찾기 바로 가기와 관련하여 다음 Greasemonkey 스크립트를 설치할 수 있습니다.

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

설명에서 알 수 있듯이 "키를 누를 때마다 검색 입력에 초점을 맞추지 못합니다". 특히 /검색 상자 외부에서 키보드 포커스 를 누르면 빠른 찾기가 다른 웹 사이트에서와 같이 나타납니다.

코드를 건드리지 않고 설치했지만 다른 사이트 및 / 또는 다른 바로 가기와 함께 작동하도록 쉽게 조정할 수 있다고 생각합니다.


명확히하기 위해 :이 사용자 스크립트는 브라우저 자체 기능을 유지하면서 활성화 된 페이지에서 모든 키보드 단축키를 중지합니다. 다른 웹 사이트에 적용하려면 더 많은 @include 태그를 추가하십시오.
MikeFHay

링크 뒤에 숨어있는 것에 대한 정보가 없으면 userscripts-mirror.org가 다운되거나 방화벽 등에 의해 차단 될 때 유감스럽게도 대답은 쓸모가 없습니다.
sylvainulg

8

Firefox 58부터는 웹 사이트별로 키보드 단축키 재정의를 비활성화 할 수 있습니다.

"키보드 단축키 무시"및 기타 많은 권한은 "페이지 정보-> 권한"(URL 막대의 정보 아이콘 아래)에서 사용할 수 있습니다.

superuser.com의 Firefox 권한 예제

키보드 대체는 Firefox # 380637에서 도입되었습니다


1
그렇습니다 .11 년 후 그들은 마침내 그 티켓을 고치기위한 반나절 일을했습니다. 불행히도 현재 구현 (여전히 FF 59)은 Backspaceand Delete키를 완전히 비활성화합니다 .
Lambart

6
또한, 불행하게도 그것은 비 이동 (즉, 아니 캡처에서 웹 페이지를 방지하지 않습니다 Ctrl, Shift또는 Alt이 원래의 질문에 언급 된 슬래시 키에 전혀 도움이되지 않는 것을 의미 - 키)를 입력합니다.
Lambart

@Lambart-파이어 폭스 키보드 단축키가 jira와 합류점 (파이어 폭스 59 근처)에서 고정 되었기 때문에이 기능도 사용하지 않았습니다.
Alec Istomin

2
무엇이 수정 되었습니까? JIRA와 Confluence는 여전히 워크 플로우를 방해하는 모든 종류의 키를 사용합니다. 나는 이것을 Atlassian의 문제로 본다 : 사람들이 "바로 가기"를 비활성화 (및 / 또는 변경) 할 수 있도록해야한다.
Lambart

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

죄송합니다.이 기능이 작동하지 않습니다. 특히 사이트에서 왼쪽 및 오른쪽 화살표 키를 비활성화하고 싶습니다. 그러나이 스크립트를 사용하면 화살표 키로 사이트를 계속 제어 할 수 있습니까 ???
Christian Herenz

-3

YesScript 애드온은 번거롭지 않은 솔루션이었습니다. 사이트에서 JavaScript를 실행하지 못하도록하지만 선택한 사이트 만 실행합니다. 대부분의 사이트는 자바 스크립트로 키보드 단축키를 가로 챌 수 있습니다. 나는에 대한 발견 이 문서 Ghacks.net 형태.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.