【问题标题】:capturing document level keypress events with javascript使用 javascript 捕获文档级按键事件
【发布时间】:2012-01-20 13:56:45
【问题描述】:

我一直在尝试捕获网页中的文档级按键事件,但是

$(document).bind('keydown', 'a', keyevent_cb);

无法在 Firefox 中始终如一地响应。在 IE 中效果很好(这是一种旅行)。有什么建议吗?我已经尝试过没有 jquery 的其他解决方案,但它们对于 firefox 也失败了。

所以我愿意接受任何始终如一的结果(无论是否是 jquery)。提前致谢。

【问题讨论】:

  • keyevent_cb 是做什么的?里面有没有错误提示?
  • 只是一个回调函数。打印一个警告框。
  • 您想在所有按键事件上触发回调还是仅在特定条件下触发?
  • 所有按键及后续操作。

标签: javascript jquery ajax web


【解决方案1】:

以下将按键事件侦听器附加到正文元素:

$("body").on("keypress", function (e) {
    // logic for key event here
});

使用您的keyevent_cb 回调,您可以这样做:

$("body").on("keypress", keyevent_cb);

【讨论】:

  • 我收到一条错误消息,告诉我“body”没有“on”方法。
  • 在 jQuery 1.7 版本中添加了.on() 方法。如果您想采用这种方法,请考虑升级。文档可以在这里找到:api.jquery.com/on
【解决方案2】:
$(document).keypress(function(e)
{
    switch(e.which)
    {
        // user presses the "a"
        case 97: doSomething(); break;
    }
});

【讨论】:

  • 我已经尝试过它的变体,它们在 IE 上运行良好。至于firefox,它可以工作1次,然后就不能工作了。这是一个非常烦人的问题。
  • 你在回调中做什么,我刚刚在 IE、chrome 和 firefox 上测试过,它们都可以工作。
  • 我已经在本地加载了页面并且没有使用调试器。
猜你喜欢
  • 2011-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多