4

我正在尝试使用 JavaScript 在浏览器中模拟用户输入。单击事件已成功创建和分派,但由于某些原因,键盘事件的类似代码似乎根本不起作用。

var event = document.createEvent("KeyboardEvent"); event.initKeyEvent("keydown", true, true, window, false, false, false, false, 87, 0); document.getElementById("id").dispatchEvent(event);

这将返回 true,但相应的字符不会出现在输入中。我也尝试过 keypress 和 keyup 也不起作用(针对 FF 和 Chrome 进行了测试)。浏览器是否出于某些安全原因禁止它,或者我做错了什么?有没有办法让它工作?

4

1 回答 1

4

事件调度良好,所有事件侦听器都将触发,没有发生的事情是角色没有被“输入”。这是因为事件的起源不是来自正确的来源。这是一个“安全功能”。

使用结果文本模拟键入的唯一方法是重新设置或以其他方式显式更改节点的内容。

于 2013-11-23T15:07:26.860 回答