Показать сообщение отдельно
  #1 (permalink)  
Старый 14.07.2010, 09:19
Интересующийся
Отправить личное сообщение для MazenRat Посмотреть профиль Найти все сообщения от MazenRat
 
Регистрация: 17.07.2009
Сообщений: 14

"Залипание" onkeydown()
Недавно столкнулся с проблемой: мне всего-то нужно было сделать обработчик на прижатую клавишу клавиатуры. Немного подумав, сделал для этого обработку события onkeydown(). Все было замечательно, пока я не подержал в нажатом состоянии клавишу с привязанным к ней обработчиком некоторое время... и каково же было мое удивление, когда функция-обработчик стала вызываться снова, снова и снова... Сначала подумал, что это виновата новая Opera, но после проверки других браузеров понял, что однократно onkeydown() срабатывает только в старой Opera 9.62 и Iceweasel 3.0.6. Во всех остальных (FireFox 3.6.6, Google Chrome 5.0, Safari 5.0, IE 8) обработчик почему-то "залипает"

Может, кто-нибудь объяснит нубу, как сделать, чтобы функция-обработчик вызывалась однократно?

Вот мой код на jQuery: ( Кликните по фрейму и попробуйте нажать и держать клавишу [t], и увидите, как будет непрерывно меняться содержимое div с id = "test" )

<!-- Подключаем библиотеку jQuery: -->
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script type='text/javascript'>
$( document ).ready(
    function(){
        $( document ).keydown(
            function( e ){
                  if( e.keyCode  == 84 )
                      // Если была прижата клавиша "t":
                      $( "#test" ).html( Math.random() );
            }
        );
    }
);
</script>
<div id = "test"></div>
Ответить с цитированием