通过 javascript/jQuery 检测 IE 中的箭头键按下
我正在尝试设置一个可以通过箭头键导航的菜单。我在 Firefox 中有这个工作鳍。
试图让它在 IE8 中工作,经过一番努力,发现这是因为 IE8 不会注册箭头上的按键。测试:
$(document).keypress(function (eh){
alert(eh.keyCode);
};
在 Firefox 中,按任意箭头键都会触发 37、38、39 或 40 的警报。
在 IE8 中,什么也没有。标准 QWERTY 键盘上的任何其他键都会注册,但方向键除外。
这是我的 JavaScript 的问题吗?浏览器设置? Windows 设置?
I'm trying to set up a menu that can be navigated via the arrow keys. I have this working fin in Firefox.
Trying to get it to work in IE8 and after a bit of struggle, found that it was because IE8 wouldn't register a keypress on the arrows. To test:
$(document).keypress(function (eh){
alert(eh.keyCode);
};
In Firefox, pressing any of the arrow keys would trigger an alert of 37, 38, 39 or 40.
In IE8, nothing. Any other key on the standard QWERTY keyboard would register, but not the arrow keys.
Is this an issue with my Javascript? A browser setting? A Windows setting?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
来自 jQuery
keypress
文档(介绍性文本的最后一段):它甚至从字面上提到了箭头键;)因此,您确实需要挂钩
keydown
或keyup
事件。这是带有keydown
的 SSCCE,只需复制“粘贴”然后运行即可。不,您不需要对事件
进行浏览器兼容检查,这适用于从 IE6 到 Firefox 的所有浏览器。From the jQuery
keypress
documentation (the last paragraph of the introductory text):It even literally mentions about the arrow keys ;) Thus, you really need to hook on either the
keydown
orkeyup
events. Here's an SSCCE withkeydown
, just copy'n'paste'n'run it. No, you don't need to do a browser-compatible check on theevent
, this works in all browsers from IE6 up to with Firefox.试试这个:
Try this:
使用“keydown”事件
Use the 'keydown' event
因为我有时不希望某些键的事件冒泡,所以我使用类似的东西:
根据您的需要自定义代码/密钥。
Because I sometimes do not want events to bubble for some keys, I use something like:
Customize the codes/keys as you see fit.