Я заметил довольно странное поведение при запуске модульного теста, который передавался на PhantomJS, но иногда не выполнялся в Chrome, Firefox и IE. В двух словах:Элемент фокус-прослушиватель не запускается после первого элемента. Фокус()
- Я установил прослушиватель фокуса для элемента DOM.
- Я вызвал
element.focus()
, но слушатель не был запущен. - Вызов
element.focus()
во второй раз фактически запустил слушателя.
К сожалению, я не мог воспроизвести эту проблему в скрипке, но это можно сделать, например, на веб-сайте jQuery. Я делаю следующие шаги в Chrome:
- Откройте www.jquery.com, а затем откройте DevTools.
- Пробег
$("input[name=s]").on("focus",() => console.log("a"));
. - Пробег
$("input[name=s]").focus();
. Выходной сигнал не генерируется. - Пробег
$("input[name=s]").focus();
. Теперь «a» печатается на консоль в первый раз!
Что вызывает эта проблема и как я могу ее обойти?
Спасибо большое! Я изменил неудачные модульные тесты и связанный код, чтобы использовать focusin, а не фокус. Я также нашел некоторые проблемы с размытием, но смена его на фокус тоже хорошо работала. :) Мне все равно нужно еще раз взглянуть на проблему и посмотреть, что ее вызывает в первую очередь. – unpollito