禁用Internet Explorer快捷键

问题描述 投票:7回答:6

EDIT:等待了一会儿,但什么都没得到,我决定做快捷方式禁用thingy仅适用于IE浏览器。是否有可能禁用IE快捷键可访问菜单/打印通过vbscript等?

是否可以禁用浏览器快捷键?

因为其中许多正在应用程序中使用。例如,正在使用Ctrl + p,但我不希望浏览器弹出打印窗口。

javascript internet-explorer vb6 vbscript activex
6个回答
4
投票

是的,您可以使用javascript侦听各种组合键,并禁用默认行为。甚至还有一个库可供您使用和测试here。我刚刚在他们的演示文本区域中使用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
投票

您可以尝试为keydown事件创建事件处理程序,检查keyCode并根据需要阻止其默认操作。但是,这并非在所有浏览器中都适用。

Firefox示例(取消“ Print”短键,已验证):

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

3
投票

与IE10 +搭配使用时,有一个不错的技巧,可以避免在Alt键组合上显示浏览器菜单,例如Alt + FAlt + 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
投票

我正在研究类似的问题,hooking keyboard event以下代码可以很好地禁用它,除非IE上的flash对象没有得到关注。由于我正在尝试处理Flash对象上的键盘事件,因此该代码对我不起作用。


1
投票

从您的应用程序中调用Ctrl + P的方法后,只需将密钥代码设为零即可。我认为这将解决您的问题...


0
投票

这在IE 8中对我有用。重要的部分是IE需要将ev.returnValue设置为false。注意:仅当您将重点放在文档上的某些元素上时,此方法才有效...也就是说,如果您仅加载页面并单击“ ctrl-p”,您将看到打印对话框。但是,如果您单击页面上的某个地方,然后尝试一下,它会取消显示打印对话框。

© www.soinside.com 2019 - 2024. All rights reserved.