【发布时间】:2014-03-28 13:14:36
【问题描述】:
这主要是一个健全性检查。两个 shift 键的键码都是 16。这是否意味着实际上无法区分浏览器中的左右 shift 事件?
【问题讨论】:
标签: javascript keyboard keycode
这主要是一个健全性检查。两个 shift 键的键码都是 16。这是否意味着实际上无法区分浏览器中的左右 shift 事件?
【问题讨论】:
标签: javascript keyboard keycode
在支持DOM3 的较新浏览器中,您可以使用event.location 来检查位置。
在the DOM3 spec中,为位置定义了4个常量DOM_KEY_LOCATION_STANDARD、DOM_KEY_LOCATION_LEFT、DOM_KEY_LOCATION_RIGHT和DOM_KEY_LOCATION_NUMPAD。
在这种情况下,你可以这样做:
if (event.location === KeyboardEvent.DOM_KEY_LOCATION_LEFT){
} else if (event.location === KeyboardEvent.DOM_KEY_LOCATION_RIGHT){
}
【讨论】:
event。
您可以使用 event.code(物理键盘字符串)代替 event.key(数字 ascii 值)。
KeyboardEvent.code 属性表示键盘上的物理键(与按键生成的字符相反)。
如果您向下滚动到底部的“代码值”,您可以找到两个不同的 shift 键:
"ShiftLeft", "ShiftRight"
【讨论】:
【讨论】:
最简单的方法
$(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>
注意:当你运行代码 sn-p 来激活键盘按键时,你必须点击里面的空白。这是在 Chrome 和 Safari 中测试的。
【讨论】: