当按下一个键时,多次按下不同的按键?
所以我在做什么时,在某个网站上按下键“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
});
对不起,我是一个一点困惑..所以我怎么编辑,以便当“e”被按下时,“w”会被触发多次? – Intrinza
这是'window.onkeydown({keyCode:87});'的替代品。这是一个琼脂质量弹出脚本吗? :) –
它应该做的。 50毫秒可能太短。我调整了80毫秒。 –
的可能的复制[如何在JavaScript触发事件?(http://*.com/questions/2490825/how-to-trigger-event-in-javascript) – Eduardo