Javascript предотвращать по умолчанию убивает нажатие клавиш - PullRequest
2 голосов
/ 24 декабря 2011

с использованием Chrome 15 на OSX 10.6.8

При добавлении прослушивателей событий я обнаружил, что при вводе preventDefault при использовании события keypress я получаю masпроблемы.

Взгляните сюда

раскомментируйте строку с event.preventDefault();, и вы увидите, что событие нажатия клавиш перестает работать.в чем дело?

1 Ответ

8 голосов
/ 24 декабря 2011

preventDefault() делает именно то, что должен.Останавливает действие по умолчанию для клавиши.Если вам нужно действие клавиши по умолчанию, не вызывайте его.

В Chrome и Firefox я вижу повторяющиеся нажатия клавиш, даже когда preventDefault() не прокомментирован с вашей скрипки.Возможно, вы теряли фокус.

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

...