我一直在使用Javascript密钥事件( keyup , keydown , keypress )进行一些工作,并得出结论,每个事件都有尝试确定用户按下了哪些键时,它们的优点和缺点。
通过使用jQuery提供的event.which,似乎 onkeypress 将提供区分大小写的字符代码。即A-Z为65-90,a-z为97-122。但是,方向等特殊键不会触发onkeypress。但它们会触发 keyup / * keydown *,但这些不会提供区分大小写的代码。
是否存在“两全其美”的解决方案,它既可以提供区分大小写检测,也可以提供特殊的密钥检测,不需要手动同时监控多个事件?
答案 0 :(得分:1)
在收听键盘事件时
$(document).on('keyup', on_key_up);
function on_key_up(event)
{
console.log('keycode:',event);
}
我记录下来了:
altKey: false
bubbles: true
cancelable: true
char: undefined
charCode: 0
ctrlKey: false
currentTarget: document
data: undefined
delegateTarget: document
eventPhase: 3
handleObj: Object
isDefaultPrevented: function ot(){return!1}
jQuery19106670567644760013: true
key: undefined
keyCode: 69
metaKey: false
originalEvent: KeyboardEvent
relatedTarget: undefined
shiftKey: false
target: body
timeStamp: 1367933052234
type: "keyup"
view: Window
which: 69
你想要keyCode(在这种情况下是69),shifKey,altKey,ctrlKey。 例如:如果你按Shift +向右键,你将获得keyCode:3,shiftKey:true。
function on_key_up(event)
{
if(event.shiftKey) // action
}
希望这有帮助。
答案 1 :(得分:0)
您可以尝试THREEx.KeyboardState.js。虽然这个lib用于JS游戏,但在你的情况下它可能很有用。