jquery - 如何在 JQuery 应用程序中捕获 Shift + F8?
问题描述
我试图在我的 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]),然后不要使用,使用和适当的密钥代码。我们现在拥有的原因是“适当的键码”因键盘布局而异。在我的键盘上,is ,所以: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...
}
});
推荐阅读
- java - 每当我在 web whatsapp 上收到新消息时如何运行 selenium 脚本
- ios - 带有 StackView 和固定页脚的 ScrollView
- grpc - 通过 grpc 端口转发网络流量
- angular - 有没有办法用 ng new 命令指定角度版本
- r - 将 data.table 与差异行绑定,以便较短的数据集重复最后一行
- c++ - 如何实现信号量?这个实现是正确的还是错误的?
- azure-data-lake - 如何将 ADLS Gen-1 与 Azure ML Studio 连接
- tensorflow - 推理时间 TensorFlow C++ API 与 Python API
- android - 安卓工具:listitem
- reactjs - 如何使用 react-ga 使用谷歌分析根据 React JS 中的用户 ID 跟踪特定用户活动或页面浏览量