6

我试图在 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 似乎不允许/使用它。那是问题吗?如果是,我该如何解决?

4

2 回答 2

12

似乎只有 IE9 及更高版本支持绑定keydownhttpwindow : //www.quirksmode.org/dom/events/keys.html#t00

相反,将其绑定到documentfor 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);
    }
}
于 2012-02-29T21:58:00.993 回答
4

请改用 document.attachEvent。:]

于 2012-02-29T21:56:32.890 回答