2009-07-15 164 views
6

编辑:等待过了一会儿,并没有得到任何东西,我决定 只为 IE快捷方式做啄禁用现在。是否有可能禁用 IE快捷键访问菜单/打印 等通过VBScript?禁用Internet Explorer快捷键

是否有可能禁用浏览器的快捷键?

因为他们很多都在使用中的应用程序。例如,按Ctrl +p使用,我不希望浏览器弹出打印窗口。

+0

你是否设法让这个工作?我遇到了同样的问题,但仍找不到解决方案。 – 2014-10-06 14:14:25

+0

@DianaAmza,我找不到解决方案。 IE不会允许您覆盖默认行为。 – 2014-10-10 07:21:57

+0

好的,谢谢! – 2014-10-13 08:01:57

回答

4

是的,你可以听与JavaScript的各种组合键和禁用默认的行为。甚至有一个图书馆,你可以使用和测试here。我只是在他们的demo textarea中使用google chrome和firefox进行了测试,并且可以按照您的需要进行操作。

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

这适用于上面列出的浏览器,但IE不允许您在某些情况下覆盖默认行为。

你在IE中唯一的选择就是用像完全禁用Ctrl键:

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

这是不理想,可能不是你想要的,但它会奏效。

+0

Ctrl + P :( – 2009-07-15 09:42:14

+0

)我在使用下面的“Live Execution”面板感到很厌倦,我把键从“Ctrl + Shift + X”更改为“Ctrl + P”,它显示打印窗口。这意味着浏览器仍在监听密钥。我正在使用firefox 3. – 2009-07-15 09:45:13

+1

有一些操作你不能禁用 – Boldewyn 2009-07-15 09:47:39

3

您可以尝试创建keydown事件的事件处理程序,检查的键码,防止其默认动作如果需要的话。但是,这不适用于所有浏览器。

为Firefox(取消“打印”短项,验证)的一个例子:

document.addEventListener("keydown", function(oEvent) { 
    if (oEvent.keyCode == 80 && oEvent.ctrlKey) 
     oEvent.preventDefault(); 
}, false) 
1

我对类似问题的工作,hooking keyboard event下面代码工作很好地禁用,除了闪光物体上的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; 
1

从您的应用程序调用上按Ctrl + P的方法只是使键码为zero.I认为,这将解决您的问题后...

window.event.keyCode = 0;

这将设置的键码作为zero..So当键代码资源管理器检查,这将是零......所以默认功能将不执行......

试试这个...只是一个建议

0

这适用于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; 
}; 
2

有一个很好的把戏与IE10 +打,以避免Alt组合键显示浏览器菜单,像Alt + FAlt + H ...

我最近在IE11中使用,只需添加一个锚与对你的身体

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

现在[yourKey]当你按下Alt + f浏览器不会显示“文件弹出”像往常一样,并让事件KeyDown和KEYUP得到:属性accesskey对你而言,而不仅仅是分身。