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

时间:2019-04-24 08:12:31

标签: jquery internet-explorer-8 internet-explorer-11 keyboard-events ie8-compatibility-mode

我试图在我的JQuery应用程序中捕获Shift + F8,并希望其向下传播。我已经阅读了许多帖子,但是以某种方式我根本无法抓住library(shiny) library(DT) ui <- fluidPage( titlePanel("Edgar Anderson's Iris Data"), DT::dataTableOutput('dt') ) # Define server logic required to draw a histogram server <- function(input, output) { dtproxy <- dataTableProxy('dt') output$dt <- renderDataTable({ datatable( iris, filter='top', options=list(dom='lritp') ) }) observe({ updateSearch(dtproxy, keywords=list(global=NULL, columns=c(rep('',5), '["virginica"]'))) }) } shinyApp(ui = ui, server = server) 钥匙。我发现1个有用的库here,但它能够找到'Shift+F8',但不能找到'Shift+F2/F3/...'。任何建议请,并提前感谢。

环境:Windows和IE(11和8)

2 个答案:

答案 0 :(得分: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(或{{的hookEvent 3}}(适用于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 :(得分:-1)

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

    }
};