【问题标题】:Which browsers use which key event system?哪些浏览器使用哪个键事件系统?
【发布时间】:2016-03-22 17:03:19
【问题描述】:

我注意到 Javascript 代码似乎被编写为以完全不同的方式读取击键,我猜这是为了支持不同的浏览器。例如,下面是网页中的一个代码块:

if (document.addEventListener)
{
   document.addEventListener("keydown",keydown,false);
   document.addEventListener("keypress",keypress,false);
   document.addEventListener("keyup",keyup,false);
   document.addEventListener("textInput",textinput,false);
}
else if (document.attachEvent)
{
   document.attachEvent("onkeydown", keydown);
   document.attachEvent("onkeypress", keypress);
   document.attachEvent("onkeyup", keyup);
   document.attachEvent("ontextInput", textinput);
}
else
{
   document.onkeydown= keydown;
   document.onkeypress= keypress;
   document.onkeyup= keyup;
   document.ontextinput= textinput;   // probably doesn't work
}

从这段代码来看,不同的浏览器似乎有完全不同的击键处理机制。以上哪些机制对应于哪些浏览器?

【问题讨论】:

标签: javascript compatibility keystroke


【解决方案1】:

addEventListener 支持:

  • 所有现代浏览器(包括 Microsoft Edge 和 IE9-IE11,当处于其损坏的“兼容”模式时)
  • 几乎所有非 Microsoft 的旧浏览器

attachEvent 仅受 Microsoft 的旧版浏览器支持(或 IE9-IE11 在损坏的“兼容”模式下)。

本世纪任何时候都不需要document.onkeydown = 样式,这是 IE5.5 之前的严重旧机制(仍然有效)。

【讨论】:

    猜你喜欢
    • 2016-04-30
    • 1970-01-01
    • 2016-05-02
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多