자바 스크립트 캡처 브라우저 바로 가기 (ctrl + t / n / w)
이러한 단축키를 캡처 할 수 있습니까?
- Ctrl+N
- Ctrl+T
- Ctrl+W
나는 이것을 시도했지만 작동하지 않습니다.
$(window).keydown(function(event) {
console.log(event.keyCode);
event.preventDefault();
});
나는 누르면 T그것을 보여줍니다 84
콘솔에서,하지만 난 프레스 경우 Ctrl+ T는 아무것도 보여주지하고 새 탭을 엽니 다.
이러한 바로 가기를 캡처하고 브라우저 작업을 방지하고 싶습니다.
Ctrl자바 스크립트에서 키보드 이벤트 캡처
샘플 코드 :
$(window).keydown(function(event) {
if(event.ctrlKey && event.keyCode == 84) {
console.log("Hey! Ctrl+T event captured!");
event.preventDefault();
}
if(event.ctrlKey && event.keyCode == 83) {
console.log("Hey! Ctrl+S event captured!");
event.preventDefault();
}
});
Firefox
(6.0.1 테스트 됨)
Firefox에서는 두 이벤트 리스너가 모두 작동합니다. CtrlT또는 키 CtrlS조합 을 누르면 콘솔에 두 메시지가 모두 표시되고 브라우저는 탭을 열지 않으며 저장을 요청하지도 않습니다.
당신이 사용하는 경우 것이 기계류되는 alert
대신 하지 작동하고 새 탭을 열거 나 저장을 요청합니다. 이 버그를 수정해야 할 수도 있습니다.console.log
event.preventDefault()
Chrome3
Chrome 3에서는 Firefox처럼 작동합니다.
Chrome4
(테스트 됨)
Chrome4에서 특정 제어 키 조합은 브라우저 사용 전용으로 예약되었으며 더 이상 웹 페이지의 클라이언트 측 JavaScript에서 가로 챌 수 없습니다.
이러한 제한은 Chrome3에 존재하지 않았으며 Firefox3 / 3.5 및 IE7 / 8 (Windows에서) 모두와 일치하지 않습니다.
Chrome 4에서는 일부 키보드 조합을 제외하고 Firefox와 유사하게 작동합니다.
CtrlN
CtrlShiftN
CtrlT
CtrlShiftT
CtrlW
CtrlShiftW
이러한 조합은 자바 스크립트로 캡처 할 수 없지만 삽입 플러그인은이를 캡처 할 수 있습니다. 예를 들어 Youtube 비디오에 초점을 맞추고을 누르면 CtrlT브라우저가 새 탭을 열지 않습니다.
IE7 / 8
Firefox 또는 Chrome3 에서처럼 작동합니다.
IE9
(테스트 됨)
IE9는 자바 스크립트가 Ctrl?키보드 이벤트 를 캡처하는 것을 허용하지 않기 때문에 다시 검은 양 입니다. 여러 키보드 조합 (R, T, P, S, N, T)으로 테스트했지만 둘 다 작동하지 않았습니다. 또한 임베디드 응용 프로그램은 이벤트를 캡처 할 수 없습니다. Youtube 비디오로 테스트했습니다.
2012 년 3 월 20 일 현재, 웹 애플리케이션이 js keydown 이벤트에서 Chrome의 Control + NWT를 처리 할 수있는 Chrome 수정이있었습니다 (따라서 순수 자바 스크립트 또는 jQuery와 같은 모든 라이브러리에서 작동 함).
이 수정을 통해 Chrome이 애플리케이션 모드에서 열린 경우 자바 스크립트가이 키 조합을 처리 할 수 있습니다.이 방법은 다음과 같습니다.
수정 사항은 다음과 같습니다.
To expand on the other answers:
The code to block certain combinations in Chrome/Chromium is defined here, im summary, F11 to exit fullscreen mode and everything manipulating and navigating tabs or windows is blocked:
[Shift]Ctrl(Q|N|W|T|Tab ↹)
Instead of trapping the Ctrl+W hotkey, detect when the window is closed might be a valid option:
"The beforeunload event is fired when the window, the document and its resources are about to be unloaded.
When a non-empty string is assigned to the returnValue Event property, a dialog box appears, asking the users for confirmation to leave the page (see example below). When no value is provided, the event is processed silently."
The answer is really simple: This is not possible directly without some tricks in javascript.
It depends on the browser. Mostly all browser catch this shortcuts and use it for their own events. (e.g open new tabs) The shortcut never reach the javascript engine.
What is easy possible however, to catch the shortcuts with flash. But this is wide away from a user friendly website.
Update:
Here a short example. Mostly all browser will show the alert when Ctrl+y is pressed. (y = 89)
document.onkeydown = keyDownEvent;
document.onkeyup = keyUpEvent;
var isCtrl = false;
function keyDownEvent() {
var keyid = event.keyCode;
if(keyid == 17) {
isCtrl = true;
}
}
function keyUpEvent() {
var keyid = event.keyCode;
if(keyid == 17) {
isCtrl = false;
}
if(keyid == 89 && isCtrl == true) {
alert('CTRL-Y pressed');
}
}
If you replace the 84 by 89, which represents a t, nothing will happen. You can try it on jsfiddle.net.
참고URL : https://stackoverflow.com/questions/7295508/javascript-capture-browser-shortcuts-ctrlt-n-w
'code' 카테고리의 다른 글
JavaScript에서 LINQ SelectMany ()와 동등한 작업을 수행하는 방법 (0) | 2020.11.24 |
---|---|
ImportError : wsgi와 함께 django를 사용할 때 'mofin.settings'설정을 가져올 수 없습니다. (0) | 2020.11.24 |
헤더 필드가있는 CSV 파일을 각 행의 속성으로 구문 분석 (0) | 2020.11.23 |
Python에서 로그 파일을 추적하려면 어떻게해야합니까? (0) | 2020.11.23 |
libXtst.so.6을 찾거나 설치할 수 없습니까? (0) | 2020.11.23 |