如何注册document.onkeypress事件

时间:2012-08-28 05:39:19

标签: javascript events cross-browser

我想使用javascript注册文档的按键事件。

我用过:

document.attachEvent("onkeydown", my_onkeydown_handler);

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

我也尝试过:

document.addEventListener("onkeydown", my_onkeydown_handler, true); 
// (with false value also)

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

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

4 个答案:

答案 0 :(得分:66)

您正在寻找:

修改

使用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.");
  }
}

DEMO:JSFIDDLE

答案 1 :(得分:7)

您可能正在寻找:

document.body.addEventListener('keydown', function (e) {
    alert('hello world');
});​​​​​​​

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

答案 2 :(得分:2)

addEventListener()的事件名称为keydown,而不是onkeydown

此外,您应该将事件处理程序附加到触发器元素,而不是document

答案 3 :(得分:-4)

请仔细阅读以下链接。

https://developer.mozilla.org/en-US/docs/DOM/element.addEventListener?redirectlocale=en-US&redirectslug=DOM%3Aelement.addEventListener

http://www.reloco.com.ar/mozilla/compat.html

简而言之,将处理程序写为

function myFunction(e)
{
    ///For IE
    if(!e)
        e=window.event;

    // use e as event in rest of code.
}