Слушать CTRL+N с помощью JavaScript
Я пытаюсь связать комбинацию клавиш "CTRL+N" следующим образом:
var ctrlPressed = false;
var nCode = 78;
var ctrlCode = 224;
var cmdCode = 17;
document.addEventListener ("keydown", function(e){
if( e.keyCode == ctrlCode || e.keyCode == cmdCode){
ctrlPressed = true;
}else{
ctrlPressed = false;
}
console.log(e.keyCode);
});
document.addEventListener ("keyup", function(e){
if(ctrlPressed && e.keyCode == nCode){
e.preventDefault();
nou_element(parent);
return;
}
});
Пожалуйста, обратите внимание: jQuery не доступен
Дело в том, что e.preventDefault(), похоже, не переопределяет функциональность окна создания, встроенную в Bowser
как я могу обойти?
1 ответ
Решение
Ваш код имеет некоторые проблемы:
Не все браузеры позволяют запрещать действия клавиатуры по умолчанию (например, Chromium 30)
Чтобы предотвратить их на других (например, Firefox или IE8), вы должны предотвратить
keydown
событие вместоkeyup
один, потому что тогда уже слишком поздно.Чтобы проверить, нажата ли клавиша Ctrl, используйте
e.ctrlKey
Демо (для Firefox)
document.addEventListener("keydown", function(e){
if(e.ctrlKey && e.keyCode == /*key code*/) {
e.preventDefault();
/* Do whatever */
}
});
Демо (для Firefox и IE8)
document.onkeydown = function(e){
e = e || window.event;
if(e.ctrlKey && e.keyCode == nCode) {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
/* Do whatever */
return false;
}
};