keydown EventListener无法在IE7中工作(Javascript)

时间:2009-12-16 17:27:50

标签: javascript javascript-events internet-explorer-7

我已将此代码写入HTML页面的HEAD标记内。它在FF,Chrome和Safaria中运行良好,但在IE7中没有。我想知道如何解决它。

<script type="text/javascript">
if ( window.addEventListener ) {
  window.addEventListener("keydown", function(e) {
    alert(e.keyCode);
  }, true);
}
</script>

提前致谢。

4 个答案:

答案 0 :(得分:2)

IE中没有window.addEventListener,您需要使用attachEvent。有关事件here的良好文档,或者您可以切换到使用抽象浏览器差异的库。

答案 1 :(得分:2)

Microsoft已经实现了自己的这种方式attachEvent。您可以在quirksmode.org上了解更多相关信息:http://www.quirksmode.org/js/events_advanced.html

答案 2 :(得分:2)

你搞砸了:你正在使用event capturing(将true作为addEventListener的最后一个参数传递。 IE在任何版本中都有 no 等等,包括IE8模式下的IE8。

是否有理由必须使用事件捕获而不是在此处冒泡? IOW,将false作为最后一个参数传递给我?然后,您可以(有点)移植它以使用IE的attachEvent专有方法,或使用库(正如其他人建议并添加链接)。

答案 3 :(得分:1)

尝试:

window.attachEvent

更全面:

//set page event handlers
if (window.attachEvent) {
//IE and Opera
window.attachEvent("keydown", "");
} else if (window.addEventListener) {
// IE 6
window.addEventListener("keydown", "");
} else {
//FireFox
document.addEventListener("keydown", "");
}