如何在JQuery应用程序中捕获Shift + F8?

问题描述 投票:0回答:2

我试图在我的JQuery应用程序中捕获Shift + F8并希望它向下传播。我读了很多帖子,但不知怎的,我根本无法抓住Shift+F8键。我找到了1个有用的lib here但它能够找到'Shift+F2/F3/...'而不是'Shift+F8'特别。任何建议请及提前感谢。

环境:Windows和IE(11和8)

jquery internet-explorer-8 internet-explorer-11 keyboard-events ie8-compatibility-mode
2个回答
0
投票

在任何现代浏览器上,您可以使用像这样的keydownkeyup事件处理程序:

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。请注意,您必须在窗口内单击以确保它具有焦点。

你已经标记了。如果你真的需要支持那个没有addEventListener的真正过时的浏览器,请使用仍支持IE8的jQuery版本(或hookEventthis answer函数,它适用于IE8 [甚至IE6])然后使用而不是使用e.key,使用e.which || e.keyCode和相应的密钥代码。我们现在有e.key的原因是“适当的键码”因键盘布局而异。在我的键盘上,F8119,所以:

// 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...
    }
});

-1
投票
document.onkeydown = function(evt){
    evt = evt || window.event;
    if(evt.shiftKey && evt.key == "F8"){

    }
};
© www.soinside.com 2019 - 2024. All rights reserved.