【发布时间】:2011-02-10 16:03:21
【问题描述】:
我对 Web 应用程序密钥捕获的当前状态有点心烦意乱。只要您知道您的用户将在特定位置(例如input 字段)输入,它就可以很好地工作,但是一旦您想为整个“应用程序”执行全局快捷方式,它似乎就崩溃了.
我正在尝试找出是否有比我目前使用的方法更好的方法来捕获网页的所有关键事件。
我目前的方法是使用JQuery Hotkeys插件,绑定到document元素,即:
$(document).bind("keyup", "delete", function() {});
这适用于大多数用途,但例如在 Firefox 上,如果用户不小心将鼠标移到导航栏上,删除键有时会导致用户“返回”,并且永远不会收到该键由处理程序,以便我可以停止传播。
我应该绑定其他元素吗?有没有更好的插件呢?我应该避免使用任何绑定到普通网络浏览器中的键吗?
随着越来越多的网络应用程序希望模仿其桌面应用程序,这似乎是网络开发人员越来越需要的基本功能。
编辑:我应该指出我已经在使用e.stopPropagation() 和e.preventDefault()。主要问题似乎是有时事件甚至从未传递给绑定函数。我基本上想知道是否有人想出了一个“更高”的元素来绑定document以外的元素。或者有没有我从未想过的替代方案?例如,在页面上嵌入一个不可见的 Flash 元素,然后将其中的所有键传递给 Javascript(我认为这行不通)。
我认为,在这一点上,我正在以“标准的、众所周知的方式”做事。我想看看是否有一种不为人所知的开箱即用的方式,也许 SO 上的某个人知道:-)。
【问题讨论】:
-
是否可以强制关注不可见的文本框?我建议使用通常在浏览器之间共享的密钥。当你按下退格键时期望页面不返回是愚蠢的。
-
您想创建快捷方式还是进行键盘记录?
-
@helle 我想创建快捷方式,而不是键盘记录。
标签: javascript jquery html javascript-events