【发布时间】:2017-12-03 02:36:58
【问题描述】:
我想知道用户在鼠标移动期间何时按下 Shift 键。
问题是当按下 Ctrl、Shift 或 Alt 时,Windows 不会触发 keydown 事件。相反,该事件在释放键时触发。但是,在 Mac 上,一切都按预期工作(按下键时会触发 keydown)
关于鼠标移动事件的相同问题。 event.shiftKey 只有在您按住 Shift 并触发 mousedown 后才会为真...
是否有任何解决方法?这是一个例子:https://jsfiddle.net/ecz0deqw/4/
document.onkeydown = function (e) {
addText('Key pressed: ' + e.key)
};
document.onmousemove = function (e) {
if(e.shiftKey)
addText('ShiftMove');
else {
addText('NoShift')
}
}
function addText(text) {
var newP = document.createElement("p");
newP.innerText = text;
document.body.insertBefore(newP,document.body.childNodes[0]);
}
谢谢/埃里克
【问题讨论】:
-
尝试在
document.body而不是document上添加事件,并使用addEventListener()这样做 -
根据
keydownspec和spec regarding "modifier keys",应该引发keydown事件。 -
感谢您回复我!没有区别,这些键的事件仍然在 Windows 上的“keyup”而不是“keydown”上触发。 jsfiddle.net/ecz0deqw/7
-
我刚刚在我的 Windows 机器上尝试了您的代码,它的行为符合预期。事件在按键按下时触发。您的系统上一定有一些不同的地方。
标签: javascript keyboard-events