如何注册document.onkeypress事件

Nil*_*ani 40 javascript events cross-browser

我想使用javascript为文档注册keypress事件.

我用过:

document.attachEvent("onkeydown", my_onkeydown_handler);
Run Code Online (Sandbox Code Playgroud)

它适用于IE,但不适用于Firefox和Chrome.

我也尝试过:

document.addEventListener("onkeydown", my_onkeydown_handler, true); 
// (with false value also)
Run Code Online (Sandbox Code Playgroud)

但它仍然无法与Firefox和Chrome一起使用.

有解决方案吗,我错过了什么吗?

Vis*_*har 72

您正在寻找:

编辑:

使用Javascript:

document.addEventListener("keydown", keyDownTextField, false);

function keyDownTextField(e) {
var keyCode = e.keyCode;
  if(keyCode==13) {
  alert("You hit the enter key.");
  } else {
  alert("Oh no you didn't.");
  }
}
Run Code Online (Sandbox Code Playgroud)

演示: JSFIDDLE


Luc*_*een 7

您可能正在寻找:

document.body.addEventListener('keydown', function (e) {
    alert('hello world');
});???????
Run Code Online (Sandbox Code Playgroud)

但几乎可以肯定的是,您可以花时间使用现有的库来抽象出许多浏览器的问题.

  • @AndriiNemchenko 因为可以在实际应用程序中使用的解决方案就是由此构建的,并且已经解决了问题。我无法评估他们应该使用什么库,但我可以向他们展示他们可以用来构建解决方案的东西,并警告他们这很难。 (2认同)