Нажатие Escape в Firefox убивает мои запросы Ajax. Я бы хотел предотвратить это

Я разрабатываю веб-приложение, которое требует длительных запросов Ajax. К сожалению, в Firefox нажатие Escape во время запроса имеет недостаток, заключающийся в уничтожении запроса и любой информации, которую он содержит. Это довольно неприятно, так как может привести к разного рода неприятным осложнениям, если это произойдет не в то время. Поэтому я хотел бы отключить эту функцию.

Моим первым рефлексом было перехватывать нажатия клавиш на границах , чтобы гарантировать, что они не дойдут до окна. Для этой цели я установил обработчик событий [keypress] только для событий, у которых [keyChar] равен 27, и заставил его вызывать [stopPropagation] и [preventDefault]. И какое-то время казалось, что это работает.

Затем я понял, что это не сработает, если пользователь не щелкнет где-нибудь в окне, поскольку обработчики событий никогда не получали событие. Я попытался прикрепить свой обработчик к или безрезультатно, поэтому в конечном итоге я добавил обработчик события [load] и заставил его переключить фокус на . И какое-то время казалось, что это работает.

Затем я понял, что когда пользователь редактировал , по какой-то причине снова, , или обработчик событий , кажется, никогда не получает событие. Итак, я добавил еще один обработчик [keypress], перехватывающий с помощью [preventDefault] на , когда [keyChar] равен 27.

На данный момент похоже, что он работает. Однако, учитывая историю появления этой ошибки в моем приложении, я немного пессимистичен.

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

Спасибо

9
задан Yoric 7 October 2010 в 15:48
поделиться