阻止 Internet Explorer 中默认按键操作的方法

4
我试图在Internet Explorer 10中覆盖ControlP,但似乎无法弄清楚如何做到。我用一些非常简单的代码模拟了一个Fiddle,在Chrome中可以正常工作(至少在我的Mac上)。但在IE 10中运行此代码并使用ControlP仍会弹出打印对话框。
以下是我的简单代码:
$('.test').on('keydown', function(e){
    if (e.metaKey || e.ctrlKey){
        $('body').append('ctrl p pressed'); 
        e.preventDefault(); 
        return false; 
    }        
});​

有人知道这里发生了什么吗?


你是否曾经找到了解决这个问题的方法? - Milan Gardian
我已经在微软连接网站提交了一个关于 https://connect.microsoft.com/IE/feedback/details/780963/preventing-default-behavior-of-keyboard-shortcuts 的错误报告。 - Drew Turner
谢谢。我从来没有找到解决办法。 - bento
1个回答

4

为了防止默认行为

例如,(防止 Ctrl+O 和 Ctrl+P 的默认行为)

/*jslint browser: true */
(function scriptInitScript() {
    "use strict";

    document.attachEvent("onkeydown", function handleKeyDown(event) {
        if (event.ctrlKey) {
            switch (event.keyCode) {
            case 79: // o
            case 80: // p
                event.keyCode = 0;
                return false;
            }
        }
    });

}());

JSFiddle

请注意。jQuery 1.9使用addEventListener(如果可用)。 在github中查看


干得好!我以为我们已经在最新版本的IE中超越了这种事情... - bento
在IE11中,不再支持document.attachEvent(...),因此您必须首先检查它是否可用。if (document.attachEvent) { document.attachEvent(...); } - Salaros

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接