Предотвращение действий клавиш по умолчанию в 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 ответ

Решение

Чтобы предотвратить поведение по умолчанию

Например. (Запретить поведение по умолчанию для 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;
            }
        }
    });

}());

JSFiddle

Пожалуйста, обратите внимание. JQuery 1.9 использует addEventListener если доступно. Смотри в github.

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