【发布时间】:2012-03-19 09:58:48
【问题描述】:
我试图在 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:
定义了window.attachEvent并添加了事件监听器。但它从不显示“测试!”警告。
我读了一些关于 useCapture 标志的东西,它可以在其他方法中使用。它在事件“关闭”之前捕获窗口上的按键。 Internet Explorer 似乎不允许/使用它。那是问题吗?如果是,我该如何解决?
【问题讨论】:
-
您可以更好地使用 jQuery 而不是重新发明轮子。它使用称为 IE 的糟糕浏览器解决了许多不同的问题
-
是的,这是 flex 项目中一个非常小的 javascript 部分,我不想只为几个方法加载 JQuery。
-
好的,但我认为这是一个错误的论点,当解决方案已经存在时,您自己就会产生问题。
-
为什么是假的,如果我认为使用 JQuery 有意义我会,但我不会仅仅因为 1 或 2 个函数而添加库。
-
我知道你在说什么,我也理解其中的原因,但我知道一切都是从“小”开始的,并且将来会发展,因为它需要更多的功能。你会做什么,你添加一个框架。问题在于使用框架时不需要的额外代码(从长远来看,您将获得相同事物的不同实现)。这就是我想说的。我已经看过太多次了。这么多公司重写了那里的软件,因为几年后它变得一团糟。
标签: javascript internet-explorer events onkeydown