当按下一个键时,请多次按下不同的键

Press a different key multiple times when one key is pressed?

本文关键字:下一个      更新时间:2023-09-26

所以我要做的是,当某个网站上按下"e"键时,它会多次按下"w"键。我做了测试,看看脚本是否达到了用alert()按下"e"的程度;它起作用了,但没有触发"w"键。

// @run-at       document-end
// ==/UserScript==
(function() {
var amount = 6;
var duration = 50; //ms
var overwriting = function(evt) {
    if (evt.keyCode === 69) { // KEY_E
        for (var i = 0; i < amount; ++i) {
            setTimeout(function() {
                alert("Key e is pressed"); /* This works */
                window.onkeydown({keyCode: 87}); // KEY_W /* This doesn't */
                window.onkeyup({keyCode: 87});
            }, i * duration);
        }
    }
};
window.addEventListener('keydown', overwriting);
})(); 

您直接调用遗留事件侦听器。事实上,如果它存在,它将被执行。但是,这不能触发已注册的事件侦听器(通过addEventListener())。要执行此操作,请向所需目标(例如窗口)触发事件,然后让浏览器执行其他操作。

window.dispatchEvent(new KeyboardEvent('keydown', 
{
  'view': window,
  'which': 87,
  'keyCode': 87,
  'bubbles': true,
  'cancelable': true
});