Показать сообщение отдельно
  #3 (permalink)  
Старый 20.06.2011, 12:08
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Сообщение от Amphiluke Посмотреть сообщение
В чем причина, хз, но методом проб можно придумать массу решений…
Например, использовать событие keyup вместо keydown
-По onkeyup не работает в Opera (аналогично как в FireFox по onkeydown).

Сообщение от Amphiluke Посмотреть сообщение
или выполнять очистку поля про помощи таймера с задержкой 0.
if (k == 27)  setTimeout((function(inp) {return function() {inp.value = '';}})(this), 0);
-В FireFox это не работает.

Сообщение от Amphiluke Посмотреть сообщение
Или как-то дополнительно воздействовать на элемент, чтобы он «зашевелился»
if (k == 27) {this.blur(); this.value=""; this.focus();}
-Да, это в FireFox работает!
Кстати, в Opera по this.focus() курсор обратно не ставится.
В принципе, манипуляция фокусом в простейшем случае решает проблему с FireFox, но... здесь я привел упрощенный фрагмент кода. В программе же у меня на onblur повешена целая ветка алгоритма с цепочкой функций. И дергать ее таким методом не хотелось бы.

Я нашел ещё один способ побороть проблему с FireFox для своего частного случая. У меня по нажатию клавиши Esc содержимое инпута не только стирается, но еще и весь инпут полностью прячется! Инициализация инпута (его "всплытие"/открытие) производится по первому нажатому пользователем символу. При этом я сначала очищаю поле this.value='' (и FireFox реально его стирает!) и сразу же в поле передается нажатый символ.

По ходу обнаружил в FireFox 4.0.1 бооольшую утечку памяти! Оставил компьютер включенным на субботу/воскресенье и в понедельник увидел, что он съел памяти более 1 Гигабайта!!! Вот уж не люблю выход новых релизов. Всегда не знаешь чего от них ожидать. Кстати я писал аналогичное об Опере здесь Сумасшедшая утечка памяти в Opera при использовании javascript в IFRAME
Но это уже другая тема.

А Вам спасибо за участие в теме.
Ответить с цитированием