Поймай "Command+R" в Safari с помощью JQuery

Мне нужно перехватить функцию браузера-перезагрузки в Safari (я знаю, что обычно это не то, что нужно делать, но в моем случае это имеет смысл).

Для Windows я просто делаю это:

$(document).keydown(function(event) {
    if ( event.which == 116 ) {
        restart();
        return false;
    }
});

Нужно ли использовать плагин JQuery для захвата двух ключей одновременно или это уже реализовано в JQuery в какой-то форме?

Кроме того, коды клавиш под Mac такие же, как и под Windows? ("Command" - это код клавиши "17", а "r" - "19"?) Или "55" для клавиши управления и "15" для "r"?

(используя этот источник: http://boredzo.org/blog/archives/2007-05-22/virtual-key-codes

3 ответа

Решение

Существует плагин Jquery для захвата событий клавиатуры, и лучше всего то, что он позволит вам обрабатывать ключевые события с их именами. например, если вы хотите захватить CTRL + R, вам не нужно беспокоиться о кодах клавиш, плагин сам справится с этим.

Проверьте это здесь: https://keithamus.github.io/jwerty/

Я думаю, что я понял это без необходимости использовать плагин. Позже я проверю, работает ли он на Mac (у меня его нет), но он работает для CTRL+R на ПК:

var keys = {};

$(document).ready(function(){
    $(document).keydown(function(event) {
        keys[event.which] = true;

        //CTRL+R on a PC    
        if(keys[17] && keys[82])
        {
            restart();
            return false;
        }   

        //COMMAND+R an a Mac    
        if(keys[81] && keys[91])
        {
            restart();
            return false;
        }       
    });

    $(document).keyup(function (event) {
        delete keys[event.which];
    });
});

Это помогло мне добраться: может ли jQuery .keypress() обнаружить более одного ключа одновременно?

Вы можете поймать + R на Mac, используя следующий код:

$(document).on( 'keydown', function(event){
    if( event.which === 82 && event.metaKey ) {
        alert( 'Your changes will be lost, are you sure to refresh?' );
    }
});

.metaKey обозначает на Mac и на ПК.

Другие вопросы по тегам