因此,我一直在尝试在 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]])
}
}
如何运行我的代码(演示):
vTest = new KeyboardEvent('keydown',
{
key:"t",
keyCode:84,
isComposing: true,
view:window
});
document.getElementsByClassName("letters")[0].dispatchEvent(vTest)
将
bubbles: true
添加到 KeyboardEvent
选项
new KeyboardEvent('keydown',
{
key:"t",
keyCode:84,
isComposing: true,
view:window,
bubbles: true
})