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

问题描述:

所以我在做什么时,在某个网站上按下键“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); 
})(); 
+0

的可能的复制[如何在JavaScript触发事件?(http://*.com/questions/2490825/how-to-trigger-event-in-javascript) – Eduardo

您正在直接调用传统事件侦听器。实际上,它会被执行,如果存在的话。但是,这不能触发注册事件侦听器(由addEventListener())。为此,触发一个事件到所需的目标(例如窗口),并让浏览器执行其他任何操作。

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

对不起,我是一个一点困惑..所以我怎么编辑,以便当“e”被按下时,“w”会被触发多次? – Intrinza

+0

这是'window.onkeydown({keyCode:87});'的替代品。这是一个琼脂质量弹出脚本吗? :) –

+0

它应该做的。 50毫秒可能太短。我调整了80毫秒。 –