Javascript 抑制Ctrl+的默认处理;O在Internet Explorer中

Javascript 抑制Ctrl+的默认处理;O在Internet Explorer中,javascript,internet-explorer,keyboard-events,Javascript,Internet Explorer,Keyboard Events,我试图抑制IE对Ctrl+O的默认处理 我有一个调用get的onKeyDown处理程序,但即使我调用了event.cancelBubble和return false,默认的File | Open命令仍然运行 顺便说一句:这并不重要,因为我可以选择另一个键,但我想知道是否有办法解决这个问题。首先,你不能调用事件。cancelBubble,它不是一个方法,而是一个可以设置为true的属性 要防止IE中特殊键的默认操作,还必须将IE keycode设置为0: function keydownHandl

我试图抑制IE对Ctrl+O的默认处理

我有一个调用get的onKeyDown处理程序,但即使我调用了
event.cancelBubble
return false
,默认的File | Open命令仍然运行


顺便说一句:这并不重要,因为我可以选择另一个键,但我想知道是否有办法解决这个问题。

首先,你不能调用
事件。cancelBubble
,它不是一个方法,而是一个可以设置为
true
的属性

要防止IE中特殊键的默认操作,还必须将IE keycode设置为0:

function keydownHandler(e) {
    e = e || window.event;

    if (e.preventDefault)
        e.preventDefault();
    else {
        e.cancelBubble = true;
        e.returnValue = false;
        e.keyCode = 0;
    }
}

您通常不能用JavaScript更改浏览器的用户界面。@RoToRa,它一直都是这样做的。例如,您可以在不同的编辑器中按住ctrl+s键。有些命令可能会优先于浏览器,但一般来说你可以这样做。哦,我想我误解了。我想他想禁用Ctrl-O,包括File/Open。必须在IE8中注册
keydown
<代码>键控不起作用。@lincolnk:正确。在
keyup
期间,无法抑制默认操作,因为此时操作已经发生。还可以看到是
e.keyCode=0
I丢失了。谢谢。@Rick:啊,那可能是因为
e.preventDefault
出现了。如果移动
e.keyCode=0,会发生什么超出条件?@Marcel:即使有了更改,在IE 11中仍然不起作用。还没有发现任何有效的技术。