"shift key"keydown 및 keyup 이벤트에 대한 코드 스 니펫을 모질라에 작성했지만 예상대로 작동하지 않습니다. 코드 :addEventListener 및 attachEvent는 어떻게 작동합니까? Keydown 및 Keyup이 제대로 작동하지 않습니다.
<html>
<head>
<title>Testing Page</title>
<script type="text/javascript">
var key_capslock = 0;
var key_shift = 0;
function print1(){ window.alert("shift status" + key_shift);}
function print2(){ window.alert("shift status" + key_shift);}
function keyset(evt){
evt.preventDefault();
if(evt.keyCode == 16){
if(key_shift == 0){key_shift = 1; evt.stopPropagation();}
else {key_shift = 0; evt.stopPropagation();}
}
print1();
return;
}
function keyrelease(evt){
evt.preventDefault();
if(evt.keyCode == 16){
if(key_shift == 0){key_shift = 1; evt.stopPropagation();}
else {key_shift = 0; evt.stopPropagation();}
}
print2();
return;
}
function init(){
document.body.setAttribute("contentEditable", true);
document.body.addEventListener("keydown", keyset, false);
document.body.addEventListener("keyup", keyrelease, false);
}
</script>
</head>
<body onload="init()">
<br>
<body>
</html>
단계 : 1. 시프트 키 (를 keyDown와의 keyup 이벤트가 발생). 2. 경고는 교대 상태와 함께 제공됩니다 (print1 기능 실행). 나는 그것을 클릭한다. 예상 됨 : 경고는 교대 상태와 함께 제공되어야합니다 (print2 기능이 실행되어야 함). 실제 : print2 기능이 실행되지 않습니다.
Shift 키를 두 번째로 누르면 print2 기능이 실행됩니다. mozilla가 addEventListener 함수를 처리하는 방법을 이해할 수 없습니다. 누군가이 문제를 해결할 수 있도록 도와 줄 수 있습니까? 이 문제 (jquery, dojo 등)를 해결하기 위해 타사 프레임 워크를 사용하고 싶지 않습니다.
감사