是否可以像真实用户交互那样进行JavaScript操作来更改文档的activeElement

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

本文关键字:操作 JavaScript activeElement 文档 真实 用户 交互 是否      更新时间:2023-09-26

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

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

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

您应该注意到,如果您单击"单击我"复选框,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/