javascript добавить прослушиватель событий в любое время и удалить прослушиватель событий в любое время - PullRequest
3 голосов
/ 02 сентября 2010
  1. На веб-странице у меня есть кнопка, при нажатии на которую вызывается функция JavaScript.
  2. В этой функции я показываю модальное диалоговое окно и хочу обрабатывать нажатия клавиш только в это время. Это когда модальный диалог виден.
  3. Когда я закрываю модальное диалоговое окно, я хочу остановить обработку нажатия клавиши.

  4. считайте, что я нажимаю кнопку и вызывается функция sam ().

    функция sam () { document.onkeypress = function (e) {processKeystroke (e); } }

  5. Итак, теперь к событию нажатия клавиши добавлена ​​функция. когда нажата клавиша, вызывается функция processkeystroke. Функция sam вызывается только после отображения модального диалогового окна.

  6. Теперь я закрываю модальное диалоговое окно, и я не хочу, чтобы функция (e) {processKes ...} вызывалась.

  7. Что я должен сделать, чтобы удалить прикрепленный прослушиватель событий из document.onkeypress.

  8. Также я хотел бы иметь альтернативы для вышеупомянутого подхода, потому что тот, который я предполагал своим, и я не ссылался на какую-либо конкретную документацию, поэтому я на самом деле проходил процедуру проб и ошибок, чтобы использовать обработчики событий или прослушиватели.

  9. Поэтому, когда я вызываю функцию sam, я хочу, чтобы функция была присоединена к событию нажатия клавиши, и если я вызываю другую функцию из примера формы closedialog (), я хочу, чтобы эта функция прослушивания нажатия клавиши была удалена. Потому что я хочу написать правильный код, который не должен потреблять много системных ресурсов.

1 Ответ

2 голосов
/ 02 сентября 2010

Просто напишите следующий код, чтобы удалить обработчик.

 document.onkeypress = null;

Поскольку вы говорите о присоединении , вам, возможно, следует проверить jquery , который обеспечивает реальное bind (прикрепить) и unbind (отсоединить) для таких событий, как keypress.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...