我有页面的第一个输入元素在焦点事件中采取行动。但是,我只想在用户由于单击,制表键等而有意手动将焦点集中在该框上时执行此操作。我不希望浏览器的默认自动聚焦动作触发该动作。

有没有办法分辨出差异?

最佳答案

给定启用了<input>autofocus元素:

<input autofocus>


...您可以使用JavaScript通过检查focus属性是否存在来忽略自动autofocus事件。如果是这样,请关闭自动对焦,以便将来所有事件都可以使用。

const input = document.querySelector('input');

input.addEventListener('focus', e => {
  // Ignore the first, automatic focus event
  if (e.target.autofocus) {
    e.target.autofocus = false;
    return;
  }

  // ... Handle user-triggered focus events ...
});

关于javascript - 确定输入焦点是由于自动聚焦还是用户交互引起的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57611574/

10-09 01:50