Disable Internet Explorer shortcut keys

2020-02-10 06:41发布

EDIT: After waited a while and didn't get anything yet, I've decided to do shortcut disable thingy only for IE now. Is there a possibility to disable IE shortcut keys to access menus/print etc. via vbscript?

Is it possible to disable browser shortkeys?

Because many of them are using in application. For instance, Ctrl+p is using and I don't want browser to popup the print window.

6条回答
一纸荒年 Trace。
2楼-- · 2020-02-10 07:21

From you application after calling the method on Ctrl+P just make the keycode as zero.I think that will solve your problem...

window.event.keyCode=0;

this will set the keycode as zero..So when explorer checks for the keyCode it will be zero...so default function will not execute...

Try this...just a suggestion

查看更多
再贱就再见
3楼-- · 2020-02-10 07:31

I am working on similar problem, hooking keyboard event Below code works well to disable, except the flash object on the IE has not got the focus. Since I am trying to handle keyboard event on the flash object, this code does not work for me.

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;
查看更多
虎瘦雄心在
4楼-- · 2020-02-10 07:34

You can try creating an event handler for keydown event, check on the keyCode and prevent its default action if needed. However this will not work in all browsers.

An example for Firefox (canceling "Print" short key, verified):

document.addEventListener("keydown", function(oEvent) {
    if (oEvent.keyCode == 80 && oEvent.ctrlKey)
        oEvent.preventDefault();
}, false)
查看更多
Rolldiameter
5楼-- · 2020-02-10 07:35

This works for me in IE 8. The important part is IE requires ev.returnValue to be set to false. NOTE: this only works if you have focus on some element on the document...that is, if you just load the page and hit 'ctrl-p' you'll see the print dialog. But if you click somewhere on the page, then try it, it should suppress the print dialog.

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;
};
查看更多
我只想做你的唯一
6楼-- · 2020-02-10 07:36

There is a nice trick to fight with IE10+, to avoid display browser menus on alt key combinations, like Alt + F, Alt + H ...

I recently used on IE11, just add an anchor with the attribute accesskey:[yourKey] on your body

<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>

Now when you press Alt + f the browser will not display "File popup" as usual, and will let events keydown and keyup gets to you, and not only keydown.

查看更多
甜甜的少女心
7楼-- · 2020-02-10 07:45

Yes, you can listen for the various key combinations with javascript and disable the default behaviors. There's even a library that you can use and test here. I just tested it using google chrome and firefox in their demo textarea, and it works as you want.

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

This works in the browsers that I listed above, but IE will not allow you to override the default behavior in some cases.

Your only option in IE is to disable the Ctrl key entirely with something like:

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

Which is not ideal and probably not what you want, but it will work.

查看更多
登录 后发表回答