是否可以执行 javascript 操作来更改文档的 activeElement,就像在真实用户交互中发生的那样?

Can javascript actions be made to change the document's activeElement as would happen with real user interactions?

我正在编写 JSONWire Protocol 的实现。 该实现模拟用户行为(点击、导航等)...我的目标是制作一个更轻便(尽管功能不完整)的 selenium 服务器版本。

现在我注意到,在模拟事件(例如,单击)时,document.activeElement 属性不会改变。

我制作了这个 JSfiddle 来演示:http://jsfiddle.net/75bq50wa/6/

您应该注意到,如果单击 "Click me" 复选框,activeElement 会发生变化,而单击 Javascript 时不会发生变化。

我的解释是,只有本机事件会改变 activeElement 属性的状态。

这是否正确,或者有什么方法可以更好地模拟 Javascript 中的用户事件?

W3C 推荐 (http://www.w3.org/TR/html5/editing.html) 说:

document . activeElement

    Returns the currently focused element.

这意味着,您需要另外 focus() 元素,以便正确模拟用户的点击。

查看更新后的 JSFiddle:http://jsfiddle.net/e3vg5k75/