调度键盘事件在 JavaScript 中不起作用

Joh*_*Doe 6 javascript keyboard dispatchevent

我正在尝试使用 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 进行了测试)。出于某些安全原因,浏览器禁止它还是我做错了什么?有没有解决方法可以让它发挥作用?

Pau*_* S. 5

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

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

  • 你是对的,当我以编程方式调度事件时,实际上也会调用“按键”事件处理程序。我不明白的是为什么它被认为是安全威胁?我总是可以将一些数据放入相应输入的值字段中,甚至可以提交包含这些数据的表单。它解决哪个问题? (6认同)