Поймай "Command + R" в Safari с помощью JQuery - PullRequest
1 голос
/ 12 октября 2011

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

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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 12 октября 2011

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

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

0 голосов
/ 26 июля 2016

Вы можете поймать + 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 обозначает 101 на Mac и на ПК.

0 голосов
/ 12 октября 2011

Думаю, я понял это без использования плагина.Позже я проверю, работает ли он на 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 () обнаруживать более одной клавиши одновременно?

...