我正在尝试在我的JQuery应用程序中捕获Shift+F8并希望它向下传播。我读过很多帖子,但不知何故,我根本无法抓住Shift+F8
关键。我在这里找到了 1 个有用的库,但它能够找到"Shift+F2/F3/...
",但不能找到"Shift+F8
"。任何建议请提前感谢。
环境 : Windows & IE (11 & 8(
在任何现代浏览器上,都可以使用如下所示的keydown
或keyup
事件处理程序:
document.addEventListener("keydown", function(e) {
if (e.key === "F8" && e.shiftKey) {
e.preventDefault();
// ...Shift+F8 was pressed...
}
});
或使用 jQuery:
$(document).on("keydown", function(e) {
if (e.key === "F8" && e.shiftKey) {
e.preventDefault();
// ...Shift+F8 was pressed...
}
});
这是否有效可能特定于浏览器,因为不同的浏览器保留不同的组合键。它适用于我的Linux副本上的Chrome和Firefox,Windows 10上的Edge和Windows 8上的IE11。请注意,您必须在窗口内单击以确保它具有焦点。
您已经标记了 internet-explorer-8。如果你真的需要支持那个真正过时的浏览器,它没有addEventListener
,使用仍然支持IE8的jQuery版本(或这个答案中的hookEvent
函数,它适用于IE8[甚至IE6](,然后不使用e.key
,使用e.which || e.keyCode
和适当的键码。我们现在e.key
的原因是"适当的键码"因键盘布局而异。在我的键盘上,F8
是119
,所以:
// For obsolete browsers without `addEventListener`
hookEvent(document, "keydown", function(e) {
if ((e.which || e.keyCode) === 119 && e.shiftKey) {
e.preventDefault();
// ...Shift+F8 was pressed...
}
});
或使用支持 IE8 的旧版本的 jQuery:
// For obsolete browsers
$(document).on("keydown", function(e) {
// ^---- if it's a REALLY old version, you might need `bind` instead of `on`
if ((e.which || e.keyCode) === 119 && e.shiftKey) {
e.preventDefault();
// ...Shift+F8 was pressed...
}
});
document.onkeydown = function(evt){
evt = evt || window.event;
if(evt.shiftKey && evt.key == "F8"){
}
};