onkeydown onkeyup проверка на нажатие
Всем здравствуйте!
Сначала пояснение на русском, ниже выложу сам код. Написал я скрипт, логика в крации такова: при нажатии в поле документа document.onkeydown= вызвать функцию pressdown. При отпускании клавиши document.onkeyup= вызвать функцию pressup. Все работает локально. Проблема в следующем - При подключении через teamviewer к компьютеру, где лежит этот html документ, - html документ игнорирует onkeyup !!! Т.е. teamviewer не отсылает команду onkeyup! Как можно в связи с этим изменить код? Или какой софт посоветуете для удаленного вызова onkeyup? А вот и код: <script language = 'javascript'> var nazhatie=0; setTimeout(repeat,100); function govorit(){ PlayVisemes('2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342'); SetEmotion('joy'); govorilka = setTimeout(govorit,1500); }; function repeat(){ if(nazhatie==500){ govorit(); zatknis(); } else setTimeout(repeat,100) }; function zatknis(){ if(nazhatie==0){ clearTimeout(govorilka); PlayVisemes('0,50'); repeat(); } else setTimeout(zatknis,100); }; function pressdown(){ nazhatie=500}; function pressup(){ nazhatie=0}; document.onkeydown=pressdown; document.onkeyup=pressup; </script> |
Мне получается нужно убрать: document.onkeyup=pressup; это сто пудово, а что взамен?
Пробовал изменить pressdown: function pressdown(){ nazhatie=500; setTimeout(pressup,200)}; Но тогда он при зажатии клавиши запускает дофигищще pressup и каждая через 200 мсек, т.е. ваще фигня получается. А что если вместо setTimeout(pressup,200) заменить на otmena = setTimeout(pressup,200) т.е. есть конкретная переменная "otmena", которая не запускается 100500 тыщ раз, а которая заменяет сама себя до тех пор, пока зажата клавиша. Правильно ли я понимаю? Или же - что еще можете предложить? |
Блин, от вас пока дождешься ответа...
Тот вопрос уже решил путем, указанный ниже. Теперь у меня другой вопрос. Как сократить то время, пока компьютер поймет, что клавиша не просто нажата, а ЗАЖАТА? Я реализовал так - при зажатии любой клавиши действует onkeydown, происходит действие. НО! Пока компьютер поймет, что клавиша зажата, проходит еще какое-то время (0,5 сек). Как это время сократить? Для тех, кто в будущем зайдет на этот сайт, вот конечный результат: var nazhatie=0; setTimeout(repeat,100); otmena = setTimeout(pressup,100); function govorit(){ PlayVisemes('2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342,2,88,19,32,19,25,5,70,20,31,2,91,15,7 7,1,94,5,342'); SetEmotion('joy'); govorilka = setTimeout(govorit,1500); }; function repeat(){ if(nazhatie==500){ govorit(); zatknis(); } else setTimeout(repeat,100) }; function zatknis(){ if(nazhatie==0){ clearTimeout(govorilka); PlayVisemes('0,50'); repeat(); } else setTimeout(zatknis,100); }; function pressdown(){ nazhatie=500; clearTimeout(otmena); otmena = setTimeout(pressup,100);}; function pressup(){ nazhatie=0}; document.onkeydown=pressdown; |
Часовой пояс GMT +3, время: 18:22. |