JavaScript - 跨浏览器检测 ESC 键

5

可能是重复问题:
使用jQuery时Escape键的键码是多少?

这段代码在Firefox和Opera浏览器中表现得非常好,但是Internet Explorer浏览器不喜欢它。

window.document.onkeydown = function (e) {   
    if (!e) {
        e = event;    
    }
    if (e.keyCode == 27) {
        myfunction();
    }
}

在IE中,检测ESC键的按下事件是否可行? 谢谢。

不是那个问题的副本。 - NetMage
当我发现这个问题时,我正在寻找的答案是,当使用现代的event.key来检测Escape键按下时,Internet Explorer使用代码“Esc”,尽管标准是“Escape”。 - Robin Stewart
2个回答

5
您使用的是哪个版本的IE浏览器? 这段代码在我使用的IE浏览器(9.01)上有效。
<!doctype html>
<html>
  <head>
    <title></title>
    <script type="text/javascript">
      window.document.onkeydown = function (e)
      {
        if (!e) e = event;
        if (e.keyCode == 27)
          alert("Hello!");
      }
    </script>
  </head>
  <body>
  </body>
</html>

请检查您的文档类型(Doctype),因为您的IE可能使用怪异模式(Quirks mode)。

这非常优雅。我只是添加了一个条件if,检查一个布尔变量,以防止每次按下逃逸键时执行不必要的代码。即 if (popped_up == true) ... - Slink

1

一些浏览器使用 e.keyCode,而其他浏览器使用 e.charCode。此外,对于事件类型,这也有所不同,某些浏览器(如 FF)将在一个键类型上使用其中一个,而在另一个键类型上使用另一个(例如字母与箭头键)

然而,在 jsfiddle 中测试,看起来 e.keyCode 是 IE9 的正确检查方式。您正在测试哪个版本的 IE?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接