Firefox 63-.focus()不会触发文本输入的“ focus”事件

时间:2018-11-06 15:39:15

标签: javascript firefox

下面是一个代码笔,用于演示我所看到的内容: 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()方法为什么不触发Firefox中的“ focus”事件的任何解释...?

注意:我知道调用.focus()可以通过单击按钮(例如在https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/focus#Focus_on_a_text_field中进行)来完成,但是该示例用于在初始页面加载期间调用.focus()。

1 个答案:

答案 0 :(得分:0)

对于遇到此问题的其他人,事实证明我打开了Firefox开发工具,并且Firefox将其重点放在页面加载上,而不是在初始渲染期间调用了.focus()的任何项目。

一些观察:

  1. 这种行为在诸如CodePen或StackBlitz之类的Web编辑器中也可见。 Firefox优先考虑以编辑器窗格为重点,而牺牲了代码本身中的任何初始.focus()调用。
  2. 对于Angular应用程序,即使在.focus()中调用ngAfterViewInit()也会被Firefox最初对开发者控制台的关注所覆盖。
    • 例如,尝试在打开和不打开开发工具的情况下,在Firefox中打开https://angular-77iyz4.stackblitz.io。仅当关闭开发工具时,文本输入才会集中显示。在Chrome中没关系。