Firefox에서 웹 사이트의 키보드 단축키 도용을 금지하는 방법


57

많은 웹 사이트, 특히 리치 텍스트 편집 (이 사이트도 유죄 임)과 관련된 모든 웹 사이트는 일반적으로 Firefox를 제어하는 ​​데 사용되는 키보드 단축키를 훔치고 대신 다른 작업을 수행합니다. Cmd-number, Cmd-L, Cmd-T 또는 Cmd-K와 같은 것을 눌렀을 때 완전히 화를 내고 싶지 않습니다. 멈출 수 있습니까?

실제로 모든 Cmd- * 바로 가기를 훔치는 것을 금지 할 수 있다면 아마도 최선일 것입니다. 나는 그들이 유용한 것에 사용 된 것을 본 적이 없다. 가능합니까?


4
동의합니다. FogBugz는 키보드 단축키를 매우 잘 구현했습니다. CTRL-;바로 가기 모드로 들어가고 사용 가능한 바로 가기를 사용하여 화면에 표시되는 모든 명령을 강조 표시합니다. 모든 단축키는 콤보이므로 새로운 경우는 CTRL-; N이고 편집은 CTRL-; E입니다. 익숙해지기 쉽고 충돌이 없습니다. 사용자가 더 쉽고 브라우저 바로 가기를 재정의하지 않기 때문에 더 많은 사이트가 이와 같은 것을 사용하기를 바랍니다. 너무 나쁜 수퍼 유저는 FogBugz와 같은 사람들이 있기 때문에이 작업을 수행하지 않습니다.
— Sam


1
이것은 Bugzilla의이 기능 요청에서 논의됩니다 .
— 기계 달팽이

어떻게 든 cmd + N을 엉망으로 만드는 많은 인트라넷 페이지를 방문하므로 키보드에서 새 브라우저 창을 열 수 없습니다! 너무 짜증나!
— Nicolas Miari

1
~ 12 년 후, Mozilla는 이에 대한 상당히 합리적인 수정을 안정화했습니다. 숨겨져 있고 불완전하지만 건강을 구할 수 있습니다. 여기 내 답변을 참조하십시오 : superuser.com/a/1317514/158390
— Lambart

답변:


24

Greasemonkey의 새로운 @run-at속성 덕분에 이제 가능합니다!

난에서 영감을했다 이 스크립트 와 이 스크립트를 성공적으로 키보드 단축키 가로채는 Userscript로 결합하는 Ctrl+ T와 Ctrl+를 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);

1
이것은 매우 도움이되었습니다. OS X 사용자는 스왑 아웃한다 e.ctrlKey위해 e.cmdKey및 e.cmdKey && e.shiftKey브라우저 바로 가기의 대부분을 회수 할 수 있습니다.
— JamesGecko

이 스크립트 9는 키 코드 배열 에 추가 하여 CTRL + TAB을 수정하도록 작동합니다 . 감사!
— Mike Mueller

@JamesGecko 이 답변을 통해 명령 키에 e.metaKey를 사용해야한다는 것을 알았습니다.
— riezebosch

3
이 코드는 작동합니다! Ctrl + 키뿐만 아니라 Ctrl + Alt + 키, Ctrl + Shift + 키 및 Ctrl + Alt + Shift + 키도 필터링합니다. Ctrl 수정 자의 상태 만 검사하기 때문입니다.
— RomanSt

첫 번째 질문 : Firefox에서 작동하는 것으로 유명한 스크립트의 경우 브라우저가 Opera인지 확인하는 이유는 무엇입니까? 두 번째 질문 : 주석에는 's'와 't'에 대한 문자 코드가 있지만 코드는 실제로 'S'와 'T'에 대한 것입니다. 어떤 이유로 대문자 코드를 지정해야합니까? 감사.
— Douglas가

8

버그가 제기 된 지 11 년 만에 Mozilla는이 인기있는 기능 요청에 대해 작업을 시작했으며 현재는 잘 작동하는 것 같습니다 (Firefox 66.0.3 / Ubuntu에서 테스트).

(FF 59 이후 설정을 찾기가 훨씬 어려워 졌다는 점을 지적한 @PerJohansson에게 감사합니다.)

다음 단계에 따라 사이트 바로 가기를 비활성화 할 수 있습니다.

  1. (i)위치 표시 줄에서 아이콘을 클릭하십시오
  2. >"연결"상태 항목의 오른쪽에 있는 작은 화살표 ( )를 클릭하십시오 .
  3. 이제 More Information하단에 표시됩니다. 그것을 클릭하면 Page Info대화 상자가 나타납니다.
  4. 마지막으로 Permissions탭 으로 이동 하여 Override Keyboard Shortcuts설정을 조정하십시오 .

각 단계에 대한 최근 (2019 년 5 월) 스크린 샷은 다음과 같습니다.

Firefox 사이트 정보 대화 상자 스크린 샷

Firefox 사이트 보안 대화 상자 스크린 샷

Firefox 권한 탭 스크린 샷

이 수정 사항의 히스토리에 관심이있는 경우 관련 Mozilla 티켓은 다음과 같습니다. https://bugzilla.mozilla.org/show_bug.cgi?id=380637 및 https://bugzilla.mozilla.org/show_bug.cgi ? id = 1445942


2
Firefox 64에서 (어디에 있는지 확실하지 않은 경우)이 연결 상자에 액세스하려면 "연결"=> "추가 정보"를 클릭해야합니다. 권한 톱니 바퀴가 대신 환경 설정으로 이동합니다.
— 당 요한슨

@PerJohansson에게 감사합니다. 티켓을 업데이트했습니다.
— Lambart

about:config기본값을 변경 하는 옵션 은 무엇입니까 ? 나는 강제로 할 모든 내 키보드에 후크 할 수 없습니다하는 사이트
— inetknght

5

광범위한 연구 결과에 따르면 Firefox (3.6.x)의 현재 버전에서는 불가능합니다. 모든 주요 바인딩 충돌은 우선 순위로 해결됩니다 : 시스템> 웹 사이트> Firefox-다소 어리석은 순서입니다. 내가 시도한 애드온 중 아무것도 고칠 수없는 것 같습니다.

향후 버전에서는 가능할 수 있지만 지금은 대답이 불가능합니다.


1
거의 4 년 후에 FF 30.0을 사용하면 여전히 문제가됩니다. 나는 Martin의 Greasemonkey 아이디어를 시도 할 것입니다.
— LGT

2
거의 8 년 후 FF 53.0을 사용하면 여전히 문제가됩니다.
— Daniel

5

문제는 키 누르기를 훔치는 JavaScript 키보드 이벤트 인 것 같으므로 이러한 모든 키보드 이벤트 를 바인딩 해제 하여 브라우저에 각 단축키의 올바른 사용법을 리턴 하는 JavaScript 스크립트 (Greasemonkey를 통해 사용)를 빌드 할 수 없습니까?

이것이 가능한지 확실하지 않지만 JavaScript / Greasemonkey 경험이 더 많은 사람이 도울 수 있습니다 (SOA를 요청할 가치가 있음).


2
이것은 onKeyPress 메커니즘을 통해 작동합니다. Firefox는 먼저 모든 키 누르기를 웹 사이트로 전송하고, 취소되거나 가로 채지 않은 경우에만 해당 키 누르기를 확인합니다. 웹 사이트 전에 키 누르기를 가로 채고 파이어 폭스 기능을 직접 실행하는 Greasemonkey 마술이 가능할 수도 있지만 분명하지는 않습니다.
— 16:54에

4

문제는 모든 페이지에서 키 누르기 이벤트를 잡기 위해 이벤트 핸들러를 설정하는 Javascript를 실행할 수 있으며 Firefox의 Javascript 컨트롤은 다른 Javascript 기능을 손상시키지 않고 중지하기에 충분하지 않습니다.

이를 방지하는 유일한 방법은 Javascript를 비활성화하는 것입니다 (도구-> 옵션, [컨텐츠] 탭, JavaScript 활성화 선택을 취소하십시오 ). 또는 NoScript와 같은 확장명을 사용하여 사이트별로 Javascript를 비활성화 할 수 있습니다.

Firefox를 사용하면 창 이동 / 크기 조정, 상황에 맞는 메뉴 변경 또는 비활성화 등과 같은 특정 Javascript 사용을 방지 할 수 있습니다 . 그러나 웹 사이트가 키보드 이벤트를 가로채는 것을 막을 방법은 없습니다.

어쩌면이 수준의 제어를 제공하는 확장 기능이있을 수 있습니다.
없다 자바 스크립트 옵션이 있지만 확장은 더 이상 업데이트되고있다.


2
Javascript 옵션과 내가 시도한 다른 확장은 이것을 지원하지 않습니다. 모든 자바 스크립트를 차단하면 웹을 거의 사용할 수 없게되는데 이는 실제로 옵션이 아닙니다.
— TAW

0

타사 플러그인이 기본 브라우저 창에서 초점을 맞추고있을 수 있습니다. 이 경우 키보드 입력 (인터럽트 제외)은 플러그인에 의해 차단됩니다. 이 기능이 마음에 들지 않으면 항상 문제가있는 플러그인을 제거 할 수 있습니다.


3
플래시도 마찬가지이지만 일반 자바 스크립트는 단축키를 훔칠 수 있습니다. 여기서 새 질문을 시작하고 질문 텍스트 창에서 Cmd-L (Mac 이외의 경우 Ctrl-L)을 누릅니다. URL 표시 줄로 이동하는 대신 바로 가기가 도난 당하고 삽입 하이퍼 링크 대화 상자가 표시됩니다. 예전에는 드물었지만 최근에 너무 많은 웹 사이트에서 시작했습니다.
— TAW

방금 Firefox를 실행하는 Windows 7에서 시도했지만 정상적으로 작동하는 것처럼 주소 표시 줄로 직접 이동했습니다.
— Daisetsu

죄송합니다. 확실하지 않습니다. 리치 텍스트 상자 대화 상자를 선택한 경우에만 발생합니다. 네가 했니? Firefox, Opera, Safari 및 Chrome을 사용하여 OSX에서 테스트했습니다. 일반적으로 Cmd-L은 모두 URL 막대로 이동합니다 (Ctrl-L은 아무것도 수행하지 않음). 질문 본문을 편집 할 때 Cmd-L과 Ctrl-L은 대신 하이퍼 링크 삽입 대화 상자를 표시합니다.
— TAW

당신이 옳은 것 같습니다. 나는 이것을 막는 방법을 모른다. :( 이제 흥미로운 질문이므로 질문을 찬성합니다. 아무도 대답하지 않으면 현상금을 지급합니다.
— Daisetsu

플러그인 문제가 아닙니다. 플러그인은 그 자체로 별도의 문제입니다. 그리고 다른 문제가 있습니다. 플러그인에서는 별도의 엔티티이기 때문에 플러그인에 의해 모든 초점이 도용됩니다. JavaScript를 사용하는 firefox UI는 JavaScript이며 자체 바인딩이 있지만 사이트는 동일한 레벨의 바인딩을 정의 할 수 있습니다. 지금까지 이를 방지 할 메커니즘 은 아직 없습니다.
— njsg

0

다양한 브라우저에서 많은 테스트를 수행 한 후이 "앱 통합 키"중 일부는 "키 누르기"이벤트를 가로 채기가 어렵 기 때문에 키를 눌렀을 때 키를 가로 채기가 더 쉽습니다.

크로스 브라우저와 호환되는이 스크립트를 생각해 냈습니다 (Microsoft의 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를 사용했습니다.


0

당신이 원하는 경우 비활성화 어떤 인수 CTRL 키 존재 웹 페이지에 의해을, 단지 (이전에 접수 및 작업 대답에 건물) AZ에서 모든 문자의 코드를 필터링

// ==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);

-1

아마도 그 프로그램 중 하나 인 Autohotkey 또는 Autoit을 사용할 수 있으며 핫키 콤보를 수행하고 파이어 폭스 기능에 연결할 수 있다면

Ctrl-; T 새 탭으로

Ctrl-; N 새 창에.

Autohotkey 또는 Autoit을 사용하는 방법을 모르므로 다른 사람이 이것이 작동하는지 확인해야하며 잠재적 인 아이디어로만 제공합니다.


-2

Firefox 최신 버전에서는 "자바 메뉴를 가로 채기 위해 자바 스크립트를 비활성화"할 수 있습니다.

도구 / 옵션 / 콘텐츠 / Javascript 고급 활성화 / 컨텍스트 메뉴 비활성화 또는 교체

그러나 "자바 단축키를 가로 채기 위해 자바 스크립트를 비활성화"하는 기능은 없습니다.

추신. 트위터 웹 사이트가 싫습니다. 키보드 단축키는 시스템 기반 키보드 단축키 J, K, L, I와 충돌합니다.

bugzilla.mozilla.org에서 기능 요청을했습니다. https://bugzilla.mozilla.org/show_bug.cgi?id=775002

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