Javascript - 触发特定的键盘键

its*_*sme 5 javascript keyboard events triggers

我有这段代码:

window.addEventListener('keydown', function (e) { 
   console.log(e.which); 
   console.log(e.keyCode); 
});

 var evObj = new KeyboardEvent('keydown', {key:65});
 window.dispatchEvent(evObj);
Run Code Online (Sandbox Code Playgroud)

为什么我在控制台看到0而不是65?

e.keyCode和e.which都是0而不是65,我在Chrome最新版本

非常感谢.

Dr.*_*lle 5

有一个在浏览器的错误,keyCodewhich不是配置.

可能的工作方式:定义自定义getter

 window.addEventListener('keydown', function (e) { console.log(e.which); });
 
 (function(o,k){
    //use createEvent for better compatibility
   var evObj = document.createEvent('HTMLEvents');
    evObj.initEvent('keydown', true, false);
    Object.defineProperty(evObj, 'keyCode', {
      get: function() {
        return k;
      }
    });
    Object.defineProperty(evObj, 'which', {
      get: function() {
        return k;
      }
    });
    o.dispatchEvent(evObj); 
 }(window,65));
Run Code Online (Sandbox Code Playgroud)

  • 它实际上触发了事件,只要"触发器"意味着将执行侦听器(否则您将不会在控制台中看到65).当你想要类似于[`sendKeys`](https://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys%28v=vs.110%29.aspx)的东西时,这是完全不同的题. (2认同)