Firefox странное поведение onblur (3.6.12) - PullRequest
0 голосов
/ 21 ноября 2010

Проверьте тестовую страницу здесь http://rickchristie.com/testfocus.html

Исправьте меня, если я ошибаюсь:

  1. onfocus происходит, когда элемент получает фокус.
  2. onblur происходит, когда элемент теряет фокус.

В Firefox 3.6.12 (протестировано на Mac и Windows) использование onblur без onfocus работает нормально.Однако, когда у элемента ввода есть оба элемента onfocus и onblur, это становится странным:

  1. Когда вы нажимаете на вход, вместо * запускается onblur1026 *.
  2. Сразу после onblur, onfocus запускается сразу.
  3. Вы не можете ничего вводить в текстовое поле.

Другие браузеры (SafariОпера) работает как положено.Это ошибка?Это только у меня или у всех, кто использует Firefox, это происходит?

Обновление

Такое поведение, кажется, происходит, только когда onblur и onfocus содержит alert -не когда я использую что-то вроде window.log.

1 Ответ

1 голос
/ 21 ноября 2010

Когда открывается окно предупреждения, фокус удаляется из текстового поля.Обратите внимание, что окно оповещения «BLUR» открывается прямо над окном оповещения «FOCUS» (последнее открывается первым), поэтому оно выглядит так, как будто onblur срабатывает до onfocus.

Посмотрите на моя тестовая страница , которая увеличивает счетчик при вызове любого из обработчиков событий, а также добавляет второе окно предупреждения после обоих остальных.Кажется, что Firefox фактически начинает выполнять обработчик размытия, как только открывается окно оповещения из обработчика фокуса, несмотря на концептуальную однопоточную модель браузера.Однако, когда первое окно оповещения (фокус) закрыто, второе окно оповещения (размытие) также необходимо закрыть до того, как откроется третье окно оповещения (после фокусировки).

Я не знаю, почему Firefox делаеттак оно и есть.Chrome продолжает запускать обработчик фокуса снова и снова, а Opera, Safari и IE делают это так, как вы ожидаете - не отвлекая фокус текстового поля.

РЕДАКТИРОВАТЬ: Я имеюнашел https://bugzilla.mozilla.org/show_bug.cgi?id=31889 и будет публиковать этот тестовый пример - очевидно, он был еще хуже.

...