如何让Chrome使用代码键入密钥?

时间:2019-07-08 13:45:16

标签: javascript google-chrome-extension keystroke

[注意]:我已经检查了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。

1 个答案:

答案 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

让我知道它如何为您工作:)