禁用Internet Explorer快捷键

时间:2009-07-15 09:29:11

标签: javascript internet-explorer vb6 vbscript activex

  

编辑:等了一会儿之后还没有得到任何东西,我已经决定了   做快捷方式禁用东西只为   IE现在。是否有可能禁用   用于访问菜单/打印的IE快捷键   等等通过vbscript?

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

因为他们中的许多人正在申请中使用。例如, Ctrl + p 正在使用,我不希望浏览器弹出打印窗口。

6 个答案:

答案 0 :(得分:4)

是的,您可以使用javascript监听各种组合键并禁用默认行为。甚至还有一个可以使用的库并测试here。我只是在他们的演示textarea中使用谷歌浏览器和Firefox来测试它,它可以按你的需要工作。

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

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

IE中唯一的选择是完全禁用Ctrl键,例如:

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

哪个不理想,可能不是你想要的,但它会起作用。

答案 1 :(得分:3)

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

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

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

答案 2 :(得分:2)

使用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时,浏览器将不会像往常一样显示“文件弹出窗口”,并且会让事件为keydown和keyup,而不仅仅是keydown。

答案 3 :(得分:1)

我正在研究类似的问题,hooking keyboard event下面的代码很适合禁用,除了IE上的flash对象没有得到关注。由于我试图在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;

答案 4 :(得分:1)

在Ctrl + P上调用方法后,从你的应用程序中只需将键码设为零。我认为这样可以解决你的问题......

window.event.keyCode = 0;

这会将键码设置为零。因此,当资源管理器检查keyCode时它将为零...所以默认函数将不会执行...

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

答案 5 :(得分: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;
};