JavaScript:如何获得箭头键绑定?

时间:2017-03-04 01:33:08

标签: javascript reactjs

我找到了一些解决方案,如:

function checkKey(e) {

        e = e || window.event;

        if (e.keyCode == '38') {
            snakeDirection = "up";
        }
        else if (e.keyCode == '40') {
            snakeDirection = "down";
        }
        else if (e.keyCode == '37') {
           snakeDirection = "left";
        }
        else if (e.keyCode == '39') {
           snakeDirection = "right";
        }
    }

但我不知道这个e的意义,也不知道e = e || window.event; 有人可以解释一下吗?

1 个答案:

答案 0 :(得分:0)

函数checkKey意味着用作事件监听器,几乎可以肯定用于keydown事件。尝试运行这个,你就会明白我的意思:

window.addEventListener('keydown', checkKey)

大多数现代浏览器中的事件侦听器采用单个参数,即事件对象,通常指定为eevent的缩写)。

但是,在某些旧版浏览器(即旧版Internet Explorer版本)中,事件对象未传递给侦听器;相反,可以使用全局window.event属性访问它。如果您希望代码对这些浏览器具有灵活性,则必须预计e可能不会被传递。这就是行e = e || window.event存在的原因:它基本上表示"如果您无法找到变量e,请将其设置为window.event并继续。&#34 ;

此事件对象包含的属性有助于解释发生的事件的细节。例如,keyCode事件对象上的属性keydown会告诉您键盘上按了哪个键。但是,这些密钥代码的编号方式不容易记住,因此您使用的if语句会出现奇怪的外观:

  • 左箭头对应于键代码37
  • 向上箭头对应于键代码38
  • 右箭头对应密钥代码39
  • 向下箭头对应密钥代码40