如果以编程方式设置focusin,则不会触发焦点

时间:2018-01-02 19:41:39

标签: javascript

我正在尝试以编程方式设置focusin后检测焦点输出事件。看看示例:(点击蓝色元素集focusin,点击文档应该触发focusout

https://jsfiddle.net/k946vcza/1/

出于某种原因,如果focusin设置为

  var focusin = new Event("focusin");
  red.dispatchEvent(focusin);
单击文档时,

focusout不会被触发。如果您首先单击red element然后单击文档,则会按预期检测到焦点。

我在这里缺少什么?

1 个答案:

答案 0 :(得分:0)

focusin不会触发焦点事件(演示为元素没有突出显示),并且由于focusout要求元素被聚焦,所以你不会看到它被调用。

如果您执行setTimeout(()=>red.focus(), 0)而非red.dispatchEvent(focusin)之类的操作,您将看到预期的行为