반응형
안녕하세요 유.독입니다!
javascript 작업 중, 그냥 클릭했을 때와 Ctrl키를 누르고 클릭했을 때에 동작방식을 다르게 하고 싶어서 찾아본 내용을 정리해보았습니다. 간단하니 바로 예시를 보여드리며 설명하겠습니다.
예시
<html>
<head></head>
<body onclick="bodyClickFunc(event)"></body>
</html>
<script>
function bodyClickFunc(event) {
if (event.ctrlKey) {
alert("ctrl 입력");
} else {
alert("ctrl 비입력");
}
}
</script>
이벤트 함수에서는 event 객체를 받을 수 있는데요, ctrl키 입력여부를 확인하기 위해서 ctrlKey 속성값이 true인지 false인지 확인하면 됩니다.
키 관련 event 속성
자주 사용하는 키
event.ctrlKey //ctrl
event.altKey //alt
event.shiftKey //shift
기타 키 눌림여부 확인
event.getModifierState("CapsLock") //"Alt", "ScrollLock" 등등 가능
Ctrl, Alt, Shift 키를 Modifier keys라고 부른다는데요,
이 함수를이용하면 CapsLock 키 또는 눌렸는지 확인할 수 있습니다.
키 리스트
https://developer.mozilla.org/en-US/docs/Web/API/UI_Events/Keyboard_event_key_values#modifier_keys
MDN사이트에서 직접 확인해보세요!
getModifierState, undefined에러가 발생합니다!😥
태그에 직접 이벤트를 걸어준 경우 (정상)
<html>
<head></head>
<body onclick="bodyClickFunc(event)"></body>
</html>
<script>
function bodyClickFunc(event) {
if (event.getModifierState("CapsLock")) { //"Alt", "ScrollLock" 등등 응용 가능
alert("CapsLock 활성");
} else {
alert("CapsLock 비활성");
}
}
</script>
Jquery를 이용하여 이벤트를 걸어준 경우 (에러)
<html>
<head>
<script src="[jquery cdn 경로]"></script>
</head>
<body id="body"></body>
</html>
<script>
$("body").on('click', function (event) {
event.getModifierState("CapsLock"); //getModifierState 함수가 없다는 에러 발생
});
</script>
jquery로 이벤트를 걸어주었더니, crtlKey, altKey, shiftKey 속성은 지원하지만 getModifierState()함수는 지원해주지 않았습니다.
⏰마무리하며
왜 jquery에서는 getModifierState()함수가 미지원인지 모르겠지만, 여기서 급 마무리해보겠습니다!
Reference
getModifierState함수 관련 링크
https://www.w3schools.com/jsref/event_mouse_getmodifierstate.asp
https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/getModifierState
참조 블로그
https://homzzang.com/b/js-1406
반응형