Поймай "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 и ⊞ на ПК.