为什么keydown监听器在IE中不起作用

时间:2012-02-29 21:48:27

标签: javascript internet-explorer events onkeydown

我试图在IE 8中运行它,但它不起作用,任何想法?它适用于Firefox,Chrome,Opera ......

preventBackspace();

function preventBackspace() {
    try {
        if (window.addEventListener) {
            window.addEventListener("keydown", onKeyDown, true);
        } else if (window.attachEvent) { // IE 
            alert(window);
            window.attachEvent("onkeydown", onKeyDown);
        } else {
            document.addEventListener("keydown", onKeyDown, true);
        }
        } catch (e) {
            alert(e);
    }
}

function onKeyDown(e) {
    alert("test!");
}

的jsfiddle:

http://jsfiddle.net/ubfBq/

定义了window.attachEvent并添加了事件侦听器。但它从未显示出“测试!”警报。

我读了一些关于useCapture标志的东西,可以在其他方法中使用。它会在事件“关闭”之前捕获窗口上的按键。 Internet Explorer似乎不允许/使用它。那是问题吗?如果是,我该如何解决?

2 个答案:

答案 0 :(得分:10)

似乎只有IE9及更高版本才支持在keydown window上绑定documenthttp://www.quirksmode.org/dom/events/keys.html#t00

相反,将其绑定到IE的function preventBackspace() { try { if (window.addEventListener) { window.addEventListener("keydown", onKeyDown, true); } else if (document.attachEvent) { // IE alert(document); document.attachEvent("onkeydown", onKeyDown); } else { document.addEventListener("keydown", onKeyDown, true); } } catch (e) { alert(e); } }

{{1}}

答案 1 :(得分:4)

请改用document.attachEvent。 :