javascript可以告诉左右键之间的区别吗?

时间:2014-02-26 00:11:18

标签: javascript keyboard keycode

大多数情况下,这是一项健全性检查。两个shift键的关键代码是16.这是否意味着在浏览器中区分左右移位事件实际上是不可能的?

4 个答案:

答案 0 :(得分:23)

在支持DOM3的较新浏览器中,您可以使用event.location来检查位置。

the DOM3 spec中,为位置DOM_KEY_LOCATION_STANDARDDOM_KEY_LOCATION_LEFTDOM_KEY_LOCATION_RIGHTDOM_KEY_LOCATION_NUMPAD定义了4个常量。

在这种情况下,你可以这样做:

if (event.location === KeyboardEvent.DOM_KEY_LOCATION_LEFT){

} else if (event.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT){

}

答案 1 :(得分:2)

Internet Explorer可以使用shiftLeft属性区分左右移位:

shiftLeft property (event)

否则,它们无法区分。

答案 2 :(得分:2)

您可以使用event.code(物理键盘字符串)代替event.key(数字ascii值)。

event.code MDN docs

  

KeyboardEvent.code属性表示键盘上的物理键(与按下键生成的字符相反)。

如果向下滚动至底部的“代码值”,则可以找到两个不同的移位键:

"ShiftLeft""ShiftRight"

答案 3 :(得分:0)

最简单的方法

$(document).ready(function(){
  $("html").keydown(function(e) {

      if (e.shiftKey) {
         if (event.location == 1) console.log('left shift');
         if (event.location == 2) console.log('right shift');
      }

  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

注意:运行代码段以激活键盘键时,必须单击内部空白区域。这是在Chrome和Safari中测试的。