我想知道当用户在鼠标移动过程中按下Shift键时。带“Ctrl,Shift或Alt”的Keydown事件不会在Windows上触发
的问题是,按下Ctrl键,移或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()'来做到这一点 –
根据['keydown' spec](https://www.w3.org/ TR/DOM-Level-3-Events /#event-type-keydown)和[关于“修饰键”的规范](https://www.w3.org/TR/DOM-Level-3-Events/# keys-modifiers),应该提高'keydown'事件。 – Amy
感谢您回复我!没有什么区别,这些键的事件在窗口上依然会触发“按键”而不是“按键”。 https://jsfiddle.net/ecz0deqw/7/ –