javascriptでUndoの機能を実装しようとしています.macで,commandキーとzキーを同時押しするとundoが実行される感じです.
同時押しの取得は,keydownイベントで押されたキーコードに対応する変数をtrueとし,両方がtrueになった際に同時押しと判定する.という実装になっています.この際,キーが離された時に対応する変数をfalseにするのですが,commandキーが押されている状態でzキーを離してもkeyupイベントでzキーのイベントが取得できず,falseにならないと言った問題が生じています.
つまりcommaneキーを押しながらzキーを離すとzキーはずっと押されている状態と判定され,commandキーを押しっぱなしでzキーを連打して一つずつUndoするということができないといった状態です.
ブラウザはgoogleChromeの最新です.
解決策をご教授願いたいです.よろしくお願いします.
以下コードです.
javascript
1 var pressCommand = false; 2 var pressZ = false; 3 function undoKeydown(e) { 4 e = window.event || e; 5 if (e.keyCode == 90) pressCommand = true; 6 if (e.keyCode == 91) pressZ = true; 7 if (pressCommand && pressZ) undo(); 8 } 9 function undoKeyup(e) { 10 e = window.event || e; 11 if (e.keyCode == 90) pressCommand = false; 12 if (e.keyCode == 91) pressZ = false; 13 } 14 document.addEventListener("keydown", undoKeydown); 15 document.addEventListener("keyup", undoKeyup);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/02/09 21:58