【发布时间】:2014-11-23 04:23:50
【问题描述】:
当我在 Mac 上运行以下代码并按下命令键(使用 Chrome)时,metaKey 设置为 keydown,但未设置为 keyup。难道我做错了什么?我只是想跟踪被按下的元键,以便我可以在我的 JavaScript 中使用它 - 如果有更好的方法,请告诉我:-)
var metaPressed = false;
$(document).keydown(function(e) {
console.log('keydown ' + e.keyCode);
if (e.metaKey || e.ctrlKey) {
console.log('meta pressed');
metaPressed = true;
}
});
$(document).keyup(function(e) {
console.log('keyup ' + e.keyCode);
if (e.metaKey || e.ctrlKey) {
console.log('meta unpressed');
metaPressed = false;
}
});
这是相关键的控制台输出
// Pressing cmd
keydown 91
meta pressed
keyup 91
// Pressing control
keydown 17
meta pressed
keyup 17
// Pressing non-meta like spacebar
keydown 32
keyup 32
【问题讨论】:
-
不确定我明白了,是不是和预期的一样,keyup 事件会在按钮被释放时触发,所以 e.metaKey 将在此时为 false,即使 keyup 事件以正确的方式触发键码?
标签: javascript jquery keypress meta-key