分派捕获的事件有效,但当我自己创建它们时则无效(HumanBenchmark)

问题描述 投票:0回答:1

因此,我一直在尝试在 HumanBenchmark 上的打字测试中获得尽可能高的分数,但在尝试分派自定义 keybaordEvents 时遇到了一些奇怪的情况。

只有当我捕获用户输入然后再次发送它们时,它才能工作,但我不明白为什么创建我自己的事件不起作用。 HumanBenchmark 似乎没有检查 isTrusted 标志,因为这在两种情况下都是错误的。

工作代码:

let vTarget = document.getElementsByClassName("letters")[0]
let vKeyEvents = {}
document.addEventListener("keydown", 
    function(e){
        vKeyEvents[e.key] = e
    }
);

function run(){
    vText = vTarget.innerText
    for (let index = 0; index < vText.length; index++) {
        vTarget.dispatchEvent(vKeyEvents[vText[index]])
    }
}

如何运行我的代码(演示):

  • 转到 HumanBenchmark 打字测试
  • 粘贴上面的代码
  • 单击 dom 中除文本框之外的任何内容
  • 按下键盘上的每个字母,包括文本中使用的大写字母和符号。
  • 在控制台中输入 run()

我用来创建键盘事件的代码不起作用

vTest = new KeyboardEvent('keydown', 
    {
        key:"t", 
        keyCode:84, 
        isComposing: true, 
        view:window
    });
document.getElementsByClassName("letters")[0].dispatchEvent(vTest)
javascript keyboard-events
1个回答
0
投票

bubbles: true
添加到
KeyboardEvent
选项

new KeyboardEvent('keydown', 
    {
        key:"t", 
        keyCode:84, 
        isComposing: true, 
        view:window,
        bubbles: true
    })
© www.soinside.com 2019 - 2024. All rights reserved.