[注意]:我已经检查了5年前可能有用但似乎无效的SO答案。请不要复制粘贴该垃圾。谢谢。
任务:
获取一个字符串,将其转换成键击序列,对该序列进行操作,最终得出结论,要放入该字符串的网页已经经历了它需要经历的所有事情,就好像字符串字符是依次由人类通过键盘按下。
问题:
这怎么办?
element.value = 'test123' // BAD EXAMPLE
如果您不知道为什么这是一个不好的例子,请不要回答此问题。
element.dispatchEvent(/*event for keydown*/)
element.dispatchEvent(/*event for textInput*/)
element.dispatchEvent(/*event for keyup*/)
^这...从技术上讲应该可以使用,但是我没有找到有效的示例。
显然,event.isTrusted可能存在一些问题,我不知道该如何解决。
...也许我没有使用正确的工具...
chrome.input.ime ...这似乎与chromeOS有关,而chrome对它没有反应。 (至少是我写的(我正在使用Windows))
也许是chrome.debugger .... ???尽管我不知道如何通过此api将键盘事件分配给元素
TL / DR
请发布一个有效的示例(在element.onkeydown(***)之外有效); 导致击键被网页注册,就好像它起源于键盘(或操作系统),而实际上却来自javascript。
答案 0 :(得分:0)
来自here:
jQuery有一个.keypress
方法,不接受任何模拟按键的参数。
$("#target").keypress();
将在#target
上触发按键
如果您还想选择按下哪个键,可以使用.trigger
。此示例来自docs:
var e = $.Event("keydown", { keyCode: 8}); //"keydown" if that's what you're doing
$("body").trigger(e);
关键代码8是JavaScript中的key code for backspace。
让我知道它如何为您工作:)