#javascript
Вопрос:
Я пытаюсь заставить пользователя удерживать пробел не менее 0,3 секунды, прежде чем код запустит функцию. Я не хочу, чтобы это нарушало какой-либо другой код, который мог бы происходить в фоновом режиме в то время. Кто-нибудь знает, как это сделать?
Я также хочу, чтобы какой-то текст стал зеленым через 0,3 секунды, поэтому, если вы удерживали клавишу в течение 1 секунды, текст будет зеленым через 0,3 секунды после удержания.
У меня есть этот базовый код:
document.body.onkeyup = function (e) {
if(e.keyCode == 32) {
// Do Something, making sure spacebar is held for at least 0.3s
}
}
Ответ №1:
Вы регистрируете ввод ключа с отметкой времени и при вводе проверяете прошедшее время.
Правка: Если вы хотите запустить функцию ровно через 0,3 с, вы делаете это наоборот, при нажатии клавиши вы устанавливаете значение var, отмечая, что пробел отключен, и устанавливаете timeout
значение, которое проверяет, по-прежнему ли клавиша отключена, а затем, например, делает что-то зеленым.
Комментарии:
1. Итак, на onkeydown я бы начал интервал, а затем в функции выше я бы проверил, что интервал больше 0,3 с? Но что, если бы я хотел, чтобы какой-то текст стал зеленым через 0,3 с и оставался зеленым до тех пор, пока клавиша не поднимется?
2. В обратном вызове onkeydown вы можете использовать setTimeout для вызова функции, которая проверяет, не был ли еще снят пробел, и если нет, включите любой текст, который вы хотите, зеленым.
3. Хорошо, Спасибо. В этом есть смысл