我在尝试捕捉键盘快捷键时发现了一个问题: CTRL +箭头。
我已经处理了keydown事件。现在当我按住 CTRL 键时,keydown事件被触发一次。如果我持有一个箭头(现在我持有 CTRL +箭头),它不会触发另一个事件。是出于任何原因禁止的吗?我想几年前我已经在Opera中遇到过这个问题,并且在浏览器中有一个选项。
我的结果:
按住 CTRL ,按箭头 - 触发 CTRL 的事件,并且不会触发箭头事件
立即按 CTRL +一个箭头 - 触发一个事件但仅使用 CTRL 的键码。
按住 CTRL ,按一个字母(例如 S ) - 按预期工作
按 CTRL +字母(例如 S ) - 按预期工作
(Chrome和Firefox的结果相同。上面描述的行为是标准吗?)
我正在使用:
function OnKeyDown(e) { }
e.ctrlKey
,e。属性事件问题是:可能是什么问题?
答案 0 :(得分:11)
你应该检查event.ctrlKey
标志是否为真,如下所示:
document.getElementById('element').onkeydown = function (e) {
e = e || window.event;
var keyCode = e.keyCode || e.which,
arrow = {left: 37, up: 38, right: 39, down: 40 };
if (e.ctrlKey) {
switch (keyCode) {
case arrow.left:
//... handle Ctrl-LeftArrow
break;
//...
}
}
};
查看示例here。