为什么keydown监听器在IE中不起作用
问题描述:
我试图在IE 8中运行它,但它不工作,任何想法?它工作在火狐,Chrome,歌剧......为什么keydown监听器在IE中不起作用
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:
window.attachEvent定义和事件侦听器添加。但它永远不会显示“测试!”警报。
我读了一些关于useCapture标志的信息,可以在其他方法中使用。它在事件“停止”之前捕获窗口上的按键。 Internet Explorer似乎不允许/使用它。这是问题吗?如果是,我该如何解决?
答
似乎只有IE9及更高版本支持在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);
}
}
+0
谢谢,这也是正确和更广泛的,但其他人是正确的,第一:) – Ixx 2012-02-29 23:52:18
你就能更好地运用,而不是重新发明轮子的jQuery 。它通过名为IE – Codebeat 2012-02-29 22:06:59
的可怕浏览器解决了很多不同的事情。是的,这是一个flex项目中非常小的JavaScript部分,我不想仅为几种方法加载JQuery。 – Ixx 2012-02-29 22:12:30
好的,但我认为这是一个错误的观点,当解决方案已经存在时,您自己会创建一个问题。 – Codebeat 2012-02-29 22:33:35