【问题标题】:Press a different key multiple times when one key is pressed?按下一个键时多次按下不同的键?
【发布时间】:2016-05-16 19:48:34
【问题描述】:

所以我正在做的是当在某个网站上按下“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);
})(); 

【问题讨论】:

标签: javascript keypress keydown


【解决方案1】:

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

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

【讨论】:

  • 对不起,我有点困惑.. 那么我该如何编辑它,以便在按下“e”时,“w”会被多次触发?
  • 这是window.onkeydown({keyCode: 87}); 的替代品。它是琼脂质量喷射脚本吗? :)
  • 应该可以。 50 毫秒可能太短了。我已经调整了 80 毫秒。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-16
  • 1970-01-01
  • 2012-12-29
  • 2011-02-07
相关资源
最近更新 更多