Я занимаюсь разработкой веб-приложения, которое требует длительных запросов Ajax. К сожалению, в Firefox нажатие клавиши Escape во время запроса имеет недостаток, заключающийся в уничтожении запроса и любой хранящейся в нем информации. Это довольно раздражает, так как это может привести к всевозможным неприятным осложнениям, если это произойдет в неподходящее время. Поэтому я хотел бы отключить эту функцию.
Мой первый рефлекс состоял в том, чтобы перехватывать нажатия клавиш на границах , чтобы гарантировать, что они не достигнут окна. Для этой цели я установил обработчик событий [keypress], только для событий, чей [keyChar] равен 27, и заставил его вызывать [stopPropagation] и [protectDefault]. И какое-то время казалось, что это работает.
Затем я понял, что это не сработает, когда пользователь нигде не щелкнет в окне, поскольку обработчики событий никогда не получали событие. Я попытался прикрепить свой обработчик к или безрезультатно, поэтому в итоге я добавил обработчик события [load] и заставил его принудительно сфокусироваться на . И какое-то время казалось, что это работает.
Затем я понял, что когда пользователь по какой-то причине редактировал , снова, обработчик событий , или , похоже, никогда не получал событие. Итак, я добавил еще один обработчик [нажатия клавиш], перехватывающий с [protectDefault] на , когда [keyChar] равен 27.
На данный момент похоже, что это работает. Однако, учитывая историю этой ошибки в моем приложении, я немного пессимистичен.
Итак, мне интересно, есть ли лучший - и воспроизводимый - метод. Напомним, что ошибка, по-видимому, появляется только в FF, поэтому я вполне готов использовать здесь подход только для FF.
Спасибо