JavaScript Event进修第十一章:按键的检测
检测用户的按键是变乱处理赏罚措施的一个很出格的环节。这一章我们出力办理一些很是棘手的题目,而且拟定一个完整的表格。 第一个题目是对付按键变乱来说基础就没有尺度,凭证类型说的:包括键盘等输入装备的变乱模子会在往后的DOM类型中作出表明。 正如我们相识到的,赏识器在最开始计划的时辰并没有一个尺度,各人都像做尝试似的,最后的制品固然是有效的,可是必定造成了兼容性的题目。按键题目也不破例:这里有两个属机能检测到用户按下了什么键,固然有足够的来由为什么必要两个属性,可是依然并不是全部的赏识器都支持。 其它,在keypress与keydown和keyup之间尚有一些很重要的区别。 最后就是windows和mac的区别了,在mac上要检测用户按下了什么键的确比在windows下难了N倍。 keyCode和charCode 能检测到用户按下了什么键的两个属性就是keyCode和charCode了。简朴说来:keyCode是用来检测用户真正按下了键盘上谁人键的,而charCode则是给出键入字符的ASCII码。有一些小题目必要留意:大写的A和小写的a的keyCode是一样的,由于他们在键盘上就是一个键;可是charCode纷歧样,由于他俩是两个差异的字符。 IE和Opera不支持charCode。然而他们会在keyCode内里生涯字符信息,可是只是在onkeypress的环境下,在onkeydown/up环境下包括的是键的信息。 字符和数字键 让我们以一个简朴的例子开始。小写a的ASCII码是97,大写的是65。那么在两种环境下,当用户在键盘上敲下沟通的键的时辰,什么时辰的键值是65呢(相等于大写的A) keyCode
charCode 因此,在onkeydown/up的环境下,你可以或许从keyCode内里获得键值。在onkeypress环境下,想要获得字符值就要行使: 标点标记 我照旧抉择差池标点标记键做测试了。我猜疑这不只跟赏识器和操纵体系有关,还也许跟键盘配置和默认说话有关。我一样平常用的是荷兰语版的windows,假如跟美国版的101键的键盘对比有很大进出,我一点都不会觉自得外。 好比说shift+,键出来的应该是<,可是我测试的ASCII码的功效却是’?’的。当我发明白这个题目,我抉择照旧不在标点标记键的题目上挥霍时刻了. 出格键 成果键就是只那些不能打印出来的可是却具有必然成果的键。好比shift、ESC、enter等等都是成果键。 一些声名: 1、一样平常,mac的靠得住性比windows要差,有些键也许检测不到 2、IE不会触发下面这键的keypress变乱:delete, end, enter, escape, 成果键, home, insert, pageUp/Down 和 tab。 3、在onkeypress变乱下,Safari会给下面这些键给出很稀疏的keyCode值:delete, end, 成果键, home 和 pageUp.Down。可是在onkeydown/up下面就很正常。 4、Alt,Cmd,Ctrl和shfit键在mac上无法探测,不外Opera下面破例。然而你却可以行使altKey,ctrlKey,shfitKey这些属性。 假如你必要探测这些键,你就探测一下载onkeydown/up下面的keyCode就行了,算是给本身资助了,onkeypress和charCode就遗忘吧。 原文后头有个大的键值的列表,尚有一个测试框,有乐趣的童鞋可以移步。 翻译地点:http://www.quirksmode.org/js/keys.html (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |