Я написал фрагмент кода для клавиш «key key» и keyup для mozilla, но он не работает так, как я ожидаю. Код:Как работают 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 не запускается.
Если я нажимаю клавишу сдвига второй раз, то функция print2 запускается. Я не понимаю, как работает функция addEventListener в mozilla. Может ли кто-нибудь помочь мне решить эту проблему? Я не хочу использовать стороннюю структуру для решения этой проблемы (jquery, dojo и т. Д.).
Благодаря