JavaScript中调度键盘事件无法正常工作

6
我正在尝试使用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中测试)。
是否由于某些安全原因,浏览器禁止了这种操作?还是我做错了什么?是否有解决方法使其正常工作?

你解决了吗? - Nabeel Khan
1个回答

5
事件调度成功,所有事件侦听器将触发,但未能实现字符“输入”。这是因为事件的起源不是来自正确的来源。这是一种“安全功能”。
模拟键入文本的唯一方法是重新设置或显式更改节点的内容。

6
你是正确的,当我通过编程方式分派事件时,“keypress”事件处理程序也会被调用。 但我不明白为什么它被认为是安全威胁?我总可以将一些数据放入相应输入框的值字段中,并使用这些数据提交表单。它解决了哪个问题? - John Doe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接