Показать сообщение отдельно
  #2 (permalink)  
Старый 04.03.2018, 01:06
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,127

-- "при удержании keypress зацикливается"
Так работает клавиатура смирись.
Если не веришь открой блокнот зажми клавишу и она будет повторятся (за исключением некоторых специальных клавиш).

-- "и не срабатывает keyup"
Срабатывает но только когда отпускается клавиша.

Снова тут поможет КЕП =).
1. Пока нажата клавиша клавиатура генерирует событие нажатия клавиши и отправляет его браузеру множество раз (т.е. эмулирует повторное нажатие).
2. keyup срабатывает только при отжатии клавиши.

В твоем коде каждый раз при возникновении события keydown происходит создание нового события setInterval которое не зависит от setInterval созданных в предыдущих keydown.

За одно нажатие могут создаваться тысячи setInterval а удаляется только последний setInterval остальные 999 продолжают пытаться выполнятся каждые 10 миллисекунд.
Это примерно 100 вызовов функции в миллисекунду что довольно много и на слабых компьютерах может появляться эффект подвисания.
Ответить с цитированием