Отключить сочетания клавиш Internet Explorer - PullRequest
6 голосов
/ 15 июля 2009

РЕДАКТИРОВАТЬ: После того, как немного подождал и ничего не получил, я решил сделать ярлык отключить чтоли только для IE сейчас. Есть ли возможность отключить Сочетания клавиш IE для доступа к меню / печати и т.д. через vbscript?

Можно ли отключить ярлыки браузера?

Потому что многие из них используются в приложении. Например, Ctrl + p использует, и я не хочу, чтобы браузер открывал окно печати. ​​

Ответы [ 6 ]

4 голосов
/ 15 июля 2009

Да, вы можете прослушивать различные комбинации клавиш с помощью javascript и отключать поведение по умолчанию. Есть даже библиотека, которую вы можете использовать и проверить здесь . Я только что проверил это, используя Google Chrome и Firefox в их демо текстовой области, и он работает, как вы хотите.

shortcut.add("Ctrl+P",function() {
    return;
});

Это работает в браузерах, которые я перечислил выше, но IE не позволит вам переопределить поведение по умолчанию в некоторых случаях.

Ваша единственная возможность в IE - полностью отключить клавишу Ctrl, например:

document.onkeydown = function () { 
  if (event.keyCode == 17) alert('Ctrl Key is disabled'); 
};

Что не идеально и, вероятно, не то, что вы хотите, но это будет работать.

3 голосов
/ 15 июля 2009

Вы можете попробовать создать обработчик события для события keydown, проверить keyCode и при необходимости запретить его действие по умолчанию. Однако это не будет работать во всех браузерах.

Пример для Firefox (отмена короткого ключа «Печать», подтверждено):

document.addEventListener("keydown", function(oEvent) {
    if (oEvent.keyCode == 80 && oEvent.ctrlKey)
        oEvent.preventDefault();
}, false)
2 голосов
/ 28 января 2015

Есть хорошая хитрость, чтобы бороться с IE10 +, чтобы избежать отображения меню браузера на комбинациях клавиш alt, таких как Alt + F, Alt + H ...

Я недавно использовал в IE11, просто добавьте привязку с атрибутом accesskey: [yourKey] на вашем теле

<body>
   <a href="#" accesskey="f"></a>
   <script type="text/javascript">
    window.onkeydown = function(e){
          console.log(e.keyCode + " alt: " + e.altKey);
          e.preventDefault();
    };
    window.onkeyup = function(e){
          console.log(e.keyCode + " alt: " + e.altKey);
          e.preventDefault();
    };
   </script>
</body>

Теперь, когда вы нажимаете Alt + f, браузер не будет отображать «всплывающее окно файла», как обычно, и позволит вам получать информацию о событиях, связанных с ключом и ключом, а не только о ключе.

1 голос
/ 05 августа 2010

Из вашего приложения после вызова метода по Ctrl + P просто сделайте код ключа равным нулю. Я думаю, что это решит вашу проблему ...

window.event.keyCode = 0;

это установит код клавиши равным нулю. Так что когда проводник проверяет код клавиши, он будет равен нулю ... поэтому функция по умолчанию не будет выполняться ...

Попробуйте это ... просто предложение

1 голос
/ 16 сентября 2009

Я работаю над аналогичной проблемой, перехватывает событие клавиатуры Ниже код хорошо работает для отключения, за исключением того, что флеш-объект в IE не получил фокус Поскольку я пытаюсь обработать событие клавиатуры на объекте flash, этот код не работает для меня.

function hookKeyboardEvents(e) {
    // get key code
    var key_code = (window.event) ? event.keyCode : e.which;

    // case :if it is IE event
    if (window.event)
    {
        if (!event.shiftKey && !event.ctrlKey) {
            window.event.returnValue = null;
            event.keyCode = 0;
        }
    }
    // case: if it is firefox event
    else
        e.preventDefault();
}

window.document.onkeydown = hookKeyboardEvents;
0 голосов
/ 18 марта 2011

Это работает для меня в IE 8. Важной частью является то, что IE требует, чтобы ev.returnValue было установлено в false. ПРИМЕЧАНИЕ: это работает, только если вы сосредоточены на каком-то элементе документа ... то есть, если вы просто загрузите страницу и нажмете "Ctrl-P", вы увидите диалоговое окно печати. Но если вы щелкнете где-нибудь на странице, а затем попробуйте, она должна отключить диалог печати. ​​

document.onkeydown = function (e) { 

    var ev = e||window.event; 

    // Do what I want keys to do ...

    // Block browser short cuts
    if(ev.preventDefault) // non-IE browsers
        ev.preventDefault();
    else  // IE Only
        ev.returnValue = false;
};
...