Как я могу захватить Shift + F8 в приложении JQuery? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь захватить Shift + F8 в моем приложении JQuery и хочу, чтобы оно распространялось вниз. Я прочитал много постов, но почему-то вообще не могу поймать ключ Shift+F8. Я нашел 1 полезную библиотеку здесь , но она может найти 'Shift+F2/F3/...', но не 'Shift+F8', в частности. Любые предложения, пожалуйста, и спасибо заранее.

Среда: Windows & IE (11 и 8)

Ответы [ 2 ]

0 голосов
/ 24 апреля 2019
document.onkeydown = function(evt){
    evt = evt || window.event;
    if(evt.shiftKey && evt.key == "F8"){

    }
};
0 голосов
/ 24 апреля 2019

В любом современном браузере вы можете использовать обработчик событий 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...
    }
});

Работает ли этоможет зависеть от браузера, потому что разные браузеры резервируют разные комбинации клавиш.Он работает в Chrome и Firefox в моей копии Linux, а также в Edge в Windows 10 и IE11 в Windows 8. Обратите внимание, что вам нужно щелкнуть внутри окна, чтобы убедиться, что оно имеет фокус.

Вы пометили.Если вам действительно нужно поддерживать этот действительно устаревший браузер, в котором нет addEventListener, используйте версию jQuery, которая все еще поддерживает IE8 (или функцию 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...
    }
});

или использование более старой версии jQuery, поддерживающей IE8:

// 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...
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...