我发现仅使用Javascript(不使用jQuery)手动触发focusin
事件非常困难,因为这是一个测试套件。
显然,当浏览器没有焦点时(只有在测试中才可能发生),我想模拟focusin
事件。
我发现CustomEvent
构造函数可以工作。
var event = new CustomEvent('focusin', { bubbles: true, cancelable: false });
this.dispatchEvent(event);
但我需要让它支持IE9+。老式的方法似乎行不通。
var event = document.createEvent('Event');
event.initEvent('focusin', true, false);
this.dispatchEvent(event);
据我所知,这两种结构在功能上应该是等效的,但显然不是真的。在浏览器窗口没有焦点时,在Chrome / Firefox / Safari中进行测试。
第二个片段有什么问题吗?
focusin
是冒泡版本的focus
:https://developer.mozilla.org/zh-CN/docs/Web/Events/focusin - T.J. Crowderbubble: true
。 - miguel.camba