IT박스

자바 스크립트에서 ctrl + z 키 조합 캡처

itboxs 2020. 11. 18. 08:49
반응형

자바 스크립트에서 ctrl + z 키 조합 캡처


이 코드로 자바 스크립트에서 ctrl+ z키 조합 을 캡처하려고합니다 .

<html>
<head>
    <title>Untitled Document</title>
</head>
<body>

    <script type='text/javascript'>
        function KeyPress(e) {
            var evtobj = window.event? event : e


            //test1 if (evtobj.ctrlKey) alert("Ctrl");
            //test2 if (evtobj.keyCode == 122) alert("z");
            //test 1 & 2
            if (evtobj.keyCode == 122 && evtobj.ctrlKey) alert("Ctrl+z");
        }

        document.onkeypress = KeyPress;
    </script>

</body>
</html>

주석 처리 된 줄 "test1"은 ctrl키를 누른 상태에서 다른 키를 누르면 경고를 생성합니다 .

주석 처리 된 줄 "test2"는 z키를 누르면 경고를 생성합니다 .

"test 1 & 2"다음 줄에 따라 이들을 모으고 ctrl키를 누른 상태에서 키를 눌러도 z예상대로 경고가 생성되지 않습니다.

코드에 어떤 문제가 있습니까?


  1. 사용 onkeydown(또는 onkeyup), 아님onkeypress
  2. keyCode122가 아닌 90을 사용하십시오.

온라인 데모 : http://jsfiddle.net/29sVC/

명확히하기 위해 키코 드는 문자 코드와 동일하지 않습니다.

문자 코드는 텍스트 용입니다 (인코딩에 따라 다르지만 많은 경우 0-127이 ASCII 코드로 남아 있음). 키 코드는 키보드의 키에 매핑됩니다. 예를 들어, 유니 코드 문자 0x22909는 好를 의미합니다. 실제로 이것에 대한 키가있는 키보드 (있는 경우)는 많지 않습니다.

OS는 사용자가 구성한 입력 방법을 사용하여 키 입력을 문자 코드로 변환합니다. 결과는 키 누르기 이벤트로 전송됩니다. (keydown과 keyup은 텍스트를 입력하지 않고 사용자가 버튼을 누르면 반응합니다.)


Ctrl+ t도 가능합니다 ... 키 코드를 84와 같이 사용하십시오.

if (evtobj.ctrlKey && evtobj.keyCode == 84) 
 alert("Ctrl+t");

$(document).keydown(function(e){
  if( e.which === 89 && e.ctrlKey ){
     alert('control + y'); 
  }
  else if( e.which === 90 && e.ctrlKey ){
     alert('control + z'); 
  }          
});

데모


90이 Z핵심이며 필요한 캡처를 수행합니다 ...

function KeyPress(e){
     // Ensure event is not null
     e = e || window.event;

     if ((e.which == 90 || e.keyCode == 90) && e.ctrlKey) {
         // Ctrl + Z
         // Do Something
     }
}

요구 사항에 따라 e.preventDefault();if 문에 를 추가 하여 사용자 지정 기능을 독점적으로 수행 할 수 있습니다.


For future folks who stumble upon this question, here's a better method to get the job done:

document.addEventListener('keydown', function(event) {
  if (event.ctrlKey && event.key === 'z') {
    alert('Undo!');
  }
});

Using event.key greatly simplifies the code, removing hardcoded constants. It has support for IE 9+, see the documentation here: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/key

Additionally, using document.addEventListener means you won't clobber other listeners to the same event. See https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

Finally, there is no reason to use window.event, its actively discouraged and can result in fragile code. See https://developer.mozilla.org/en-US/docs/Web/API/Window/event


This Plugin Made by me may be helpful.

Plugin

You can use this plugin you have to supply the key Codes and function to be run like this

simulatorControl([17,90], function(){console.log('You have pressed Ctrl+Z');});

In the code I have displayed how to perform for Ctrl+Z. You will get Detailed Documentation On the link. Plugin is in JavaScript Code section Of my Pen on Codepen.


Use this code for CTRL+Z. keycode for Z in keypress is 122 and the CTRL+Z is 26. check this keycode in your console area

 $(document).on("keypress", function(e) {
       console.log(e.keyCode);
       /*ctrl+z*/
       if(e.keyCode==26)
       {
          //your code here
       }
    });

참고URL : https://stackoverflow.com/questions/16006583/capturing-ctrlz-key-combination-in-javascript

반응형