Firefox 63 - .focus () не запускает событие «focus» для ввода текста - PullRequest
0 голосов
/ 06 ноября 2018

Вот кодекс, чтобы продемонстрировать, что я вижу: https://codepen.io/anon/pen/zMvxPy

HTML:

<input type="text" />

JS:

$('input').on('focus', () => {
  console.log('focused...')
});

$('input').focus();

В Chrome текстовый ввод получает фокус, и событие «фокус» запускается. В Firefox (63.0.1) ввод текста не фокусируется и событие фокусировки не запускается.

Однако вы можете щелкнуть по вводу текста, и событие «focus» сработает правильно.

Любые объяснения, почему метод .focus () не запускает событие "focus" в Firefox ...?

Примечание: я знаю, что вызов .focus () работает через что-то вроде нажатия кнопки (как в https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Focus_on_a_text_field), но этот пример предназначен для вызова .focus () во время начальной загрузки страницы.

1 Ответ

0 голосов
/ 08 ноября 2018

Для всех, кто сталкивался с этим, оказывается, что у меня были открыты инструменты разработки Firefox, и Firefox фокусирует ТО на загрузке страницы, а не на любых элементах, которые .focus() вызывались во время первоначального рендеринга.

Пара замечаний:

  1. Такое поведение также наблюдается в веб-редакторах, таких как CodePen или StackBlitz. Firefox отдает приоритет фокусировке панели редактора за счет любых начальных .focus() вызовов в самом коде.
  2. В случае приложения Angular даже вызов .focus() в ngAfterViewInit() отменяется первоначальным фокусом Firefox на консоли разработчика.
    • Например, попробуйте открыть https://angular -77iyz4.stackblitz.io в Firefox с открытыми инструментами разработчика и без них. Ввод текста будет только в том случае, если инструменты разработки закрыты В Chrome это не имеет значения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...