Предотвращение действий клавиш по умолчанию в Internet Explorer
Я пытаюсь переопределить ControlP в Internet Explorer 10, но не могу понять, как это сделать. Я разработал Fiddle с очень простым кодом, который работает в Chrome (по крайней мере, на моем Mac). Но выполнение этого в IE 10 и использование ControlP по- прежнему вызывает диалоговое окно печати.
Вот мой простой код:
$('.test').on('keydown', function(e){
if (e.metaKey || e.ctrlKey){
$('body').append('ctrl p pressed');
e.preventDefault();
return false;
}
});
Кто-нибудь знает, что здесь происходит?
1 ответ
Решение
Чтобы предотвратить поведение по умолчанию
- используйте attachEvent вместо addEventListener
- задавать
event.keyCode
до 0 - вернуть ложь
Например. (Запретить поведение по умолчанию для Ctrl+O и Ctrl + P)
/*jslint browser: true */
(function scriptInitScript() {
"use strict";
document.attachEvent("onkeydown", function handleKeyDown(event) {
if (event.ctrlKey) {
switch (event.keyCode) {
case 79: // o
case 80: // p
event.keyCode = 0;
return false;
}
}
});
}());
Пожалуйста, обратите внимание. JQuery 1.9 использует addEventListener
если доступно. Смотри в github.