메뉴 건너뛰기

관리자2019.06.30 17:31
key 관련 이벤트가 발생했을 때 이벤트 객체의 타입은 KeyboardEvent 라는 것입니다.
웹 표준이 변하면서 이 객체의 멤버들 중 몇개가 폐기 처분되었는데, 그 중에 altLeft, ctrlLeft, shiftLeft 등이 포함되어 있네요.
익스플로러의 예전 버전에서는 잘 동작하였는데 현재 버전에서는 이들이 작동하지 않습니다.
이들 대신 KeyboardEvent 객체에 다른 멤버들이 이들의 역할을 하는데
바로 code 라는 프로퍼티입니다.
code는 눌러진 키의 이름을 알려주는 read-only 속성으로 문자열 값입니다.
그래서 예제 9-20을 다음과 같이 수정하면 됩니다.
다음 출간시에는 예제를 모두 수정해놓아야겠습니다.
덕분에 놓치고 있었던 것들을 바로 잡을 수 있었습니다. 감사!

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>키 이벤트</title>
<script>
function whatKeyDown(e) {
var str = "";
var div = document.getElementById("div");
div.innerHTML = ""; // div 객체 내용을 지운다.
if(e.altKey) {
str += e.code + " 키가 눌러졌습니다.";
str += "<br>";
}

if(e.shiftKey) {
str += e.code + " 키가 눌러졌습니다.";
str += "<br>";
}

if(e.ctrlKey) {
str += e.code + " 키가 눌러졌습니다.";
str += "<br>";
}

str += String.fromCharCode(e.keyCode) + "키가 눌려졌습니다."
div.innerHTML = str; // div 객체에 html 문서 조각을 출력한다.
}
</script>
</head>
<body>
<h3>키 리스너와 키 이벤트 객체의 프로퍼티</h3>
<hr>
텍스트 창에 키를 눌러 보세요. Alt, Shift, Ctrl 키도 가능합니다.<br>
<input type="text" id="text" onkeydown="whatKeyDown(event)">
<div id="div" style="background-color:skyblue; width:250px; height:50px">
</div>
</body>
</html>
파일 첨부

여기에 파일을 끌어 놓거나 파일 첨부 버튼을 클릭하세요.

파일 크기 제한 : 0MB (허용 확장자 : *.*)

0개 첨부 됨 ( / )
위로