Why keydown listener does not work in IE

I am trying to run this in IE 8, but this does not work, any idea? It works in 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 is defined and an event listener has been added. But he never shows "test!". warning.

I read something about the useCapture flag, which can be used in other methods. It captures a keystroke on a window before the event "drops". Internet Explorer doesn't seem to allow / use this. This is problem? If so, how can I solve it?

+5
source share
2 answers

Use document.attachEvent instead.]

+4
source

, IE9 keydown window: http://www.quirksmode.org/dom/events/keys.html#t00

document 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);
    }
}
+9

All Articles