Chrome (может быть, Safari?) дважды запускает «размытие» в полях ввода, когда браузер теряет фокус

Вот интересный jsfiddle.

В Firefox:

  1. Запустите скрипку
  2. Щелкните при вводе текста
  3. Щелкните в другом месте. Должен сказать "1 размывает".
  4. Снова нажмите на поле ввода текста.
  5. ALT-TAB переход в другое окно. Теперь скрипка должна сказать «2 размытия».

В Chrome на шаге 5 указано «3 размытия». Два отдельных события «размытие» запускаются, когда весь браузер теряет фокус. Это представляет интерес, потому что это означает, что в обработчике «размытия» небезопасно предполагать, что элемент действительно имел фокус непосредственно перед отправкой события; то есть потеря фокуса — переход от «нахождения в фокусе» к «не в фокусе» — является причиной события. Когда генерируются двасобытия "размытие", это условие не выполняется при обработке второго события, так как элемент уже не находится в фокусе.

Так это просто ошибка? Есть ли способ сказать, что событие "размытие" является фиктивным?

22
задан Pointy 10 March 2012 в 20:34
поделиться