当前位置:  开发笔记 > 编程语言 > 正文

在javascript中匹配event.keyCode时如何避免幻数

如何解决《在javascript中匹配event.keyCode时如何避免幻数》经验,为你挑选了1个好方法。

在javascript中匹配按键时,我可以避免使用幻数吗?

一个例子是使用13来匹配回车键.

我可以指定自己的常量,但我不知道这些值是否在不同的平台/浏览器/语言环境中足够稳定.



1> A. Levy..:

我第一次尝试这样做时,使用了String的charCodeAt方法.例如,如果您想检测按下"a"键:

if ("A".charCodeAt(0) == event.keyCode) {
  /* Do stuff here. */
}

请注意,我使用大写"A"而不是"a".这是因为event.keyCode仅报告为大写字母的Unicode值(如果它是alpha键).是什么让这个问题有点毛茸茸,有几种方法可以获得按下的键的Unicode值.在Firefox中你有:

event.keyCode

event.charCode

event.which

根据Mozilla开发人员文档,密钥的Unicode值将存储在event.keyCode或event.charCode中,但不能同时存储在两者中.无论哪个代码都有,它也将存储在event.which中.但是,如果值存储在charCode中,则它将区分大小写.因此,根据您从哪里获得活动,您可能需要检查"a"和"A".如果您只能从"onkeydown"事件中获取关键事件,而且您的目标是Firefox,那么您可以依靠在event.keyCode中设置不区分大小写的(大写)代码.事实上,我在Windows XP上的Firefox 3.0.3,MacOS 10.4上的Firefox 3.0.4,MacOS 10.4上的Safari 3.2.1和MacOS 10.4上的OmniWeb 5.8上进行了测试,它们的工作原理相同.但是,我没有在任何IE版本或Opera等上试过这个.

如果你想自己开发这个.我建议您在尽可能多的不同操作系统上找到尽可能多的不同浏览器,并进行一些实验以了解每个浏览器如何报告密钥代码.但是,有人已经完成了这项工作.它甚至在您作为示例链接的问题的答案之一中提到过!它是jQuery的一个名为js-hotkeys的插件.它允许您注册在按下键或组合键时执行的回调函数.我从项目网站复制的示例用法:

$(document).bind('keydown', 'Ctrl+a', fn);

它已经过测试,可以在各种不同的浏览器/平台上运行,因此如果您使用的是jQuery,这可能就是您的选择.如果由于某种原因你不想使用jQuery,那你就不会运气不好.显然这是基于另一个你可以使用的脚本.我还没有亲自使用这些库中的任何一个,所以我不能保证它们的易用性或功效.也就是说,如果我遇到了你的问题,那就是我要解决它的方向.

推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有