Comments 3
Поправил ваш исходный код, сделав всю остальную статью бессмысленной:
element.addEventListener( 'keydown', event => {
if( event.defaultPrevented ) return
const KEY = event.key.toUpperCase()
const CTRL = event.ctrlKey
const SHIFT = event.shiftKey
switch( KEY ) {
case CTRL && SHIFT && 'F' : this.onSearch() ; break
case CTRL && SHIFT && 'Z' : this.onRedo() ; break
case CTRL && 'Z' : this.onUndo() ; break
default : return
}
event.preventDefault()
} )
+1
Не уверен, что вы поняли мой посыл. Но может это конечно моя вина (первая статья все таки)… Обратите внимание на строки
В качестве пояснения, приведу пример. Перехватить CTRL+F без preventDefault не получится. Таким образом if( event.defaultPrevented ) return не гарантирует состояния обработанности. — Это первое.
До картинки вы похоже не дочитали про кросбраузерность использоваться символьного представления клавиши… — это второе…
Ну и пожалуй в коде какие-то проблемы…
И даже если ваш приведенный пример кода правильно написать — простым в дебаге и понятным, от этого он не становится. Не говоря уже про рефакторинг такого и масштабируемость
Утверждение что event обработан если он имеет флаг defaultPrevented и его распространение прервано — не верно.
В качестве пояснения, приведу пример. Перехватить CTRL+F без preventDefault не получится. Таким образом if( event.defaultPrevented ) return не гарантирует состояния обработанности. — Это первое.
До картинки вы похоже не дочитали про кросбраузерность использоваться символьного представления клавиши… — это второе…
Ну и пожалуй в коде какие-то проблемы…
switch( KEY ) {
case CTRL && SHIFT && 'F' : this.onSearch() ; break
case CTRL && SHIFT && 'Z' : this.onRedo() ; break
case CTRL && 'Z' : this.onUndo() ; break
default : return
}
И даже если ваш приведенный пример кода правильно написать — простым в дебаге и понятным, от этого он не становится. Не говоря уже про рефакторинг такого и масштабируемость
0
Перехватить CTRL+F без preventDefault не получится. Таким образом if( event.defaultPrevented ) return не гарантирует состояния обработанности.
Гарантирует, что кто-то событие уже обработал и попросил далее никому не обрабатывать.
про кросбраузерность использоваться символьного представления клавиши
Для этого есть полифилы.
Ну и пожалуй в коде какие-то проблемы…
Нет там никаких проблем, не выдумывайте.
простым в дебаге и понятным, от этого он не становится. Не говоря уже про рефакторинг такого и масштабируемость
Что вам не понятно в этом тривиальном коде и что вызывает у вас сложности с дебагом, рефакторингом и масштабируемостью?
0
Sign up to leave a comment.
Обработка нажатий клавиш ака shortcuts и дебаггинг