`

利用Javascript脚本捕获键盘事件

    博客分类:
  • J2EE
阅读更多
在很多应用中,用户都希望WEB应用能够在界面上支持一些快捷键,最常见的就是上下左右、TAB、回车等的快捷键支持。抛开在页面上运行Applet、Flash 的方式来对键盘快捷键支持外,利用JavaScript也能够有出色的表现。
在对键盘时间的支持上,操作系统提供了一整套的虚拟键键值,要使我们的应用能够很好的支持快捷键,了解这些键值是必不可少的。
现将常见的键值列举如下:

A 0X65                            U 0X85
B 0X66                            V 0X86
C 0X67                            W 0X87
D 0X68                            X 0X88
E 0X69                            Y 0X89
F 0X70                            Z 0X90
G 0X71                            0 0X48
H 0X72                            1 0X49
I 0X73                            2 0X50
J 0X74                            3 0X51
K 0X75                            4 0X52
L 0X76                            5 0X53
M 0X77                            6 0X54
N 0X78                            7 0X55
O 0X79                            8 0X56
P 0X80                            9 0X57
Q 0X81                            ESC 0X1B
R 0X82                            CTRL 0X11
S 0X83                            SHIFT 0X10
T 0X84                            ENTER 0XD(用十进制就是13)

还有方向键:
← 37                             →  39
F1键 112                         F2键  113
F3键 114                         F4键  115
F5键 115                         F6键  116
F7键 117                         F8键  118
F1键 119                         F4键  110
退格删除键  8                     TAB键  40

通常,快捷键的支持都是在整个Document对象内部都有效的。因此,在声明脚本时可以采用以下方式:
 
<script language="javascript" for="document" event="onkeydown">
 
这样,在整个Document对象内部,你所声明的其内所有的脚本都会生效。因此,如果你需要做的处理都比较简单的话,你也不必要使用function来处理。这种方式或许会更加有效。
为了能够更好的支持虚拟键,JavaScript还对一些常用控制键进行了更进一步的封装,这些键有:Ctrl键、Shift键、Alt键等,对应的操作指令分别为:
 
window.event.ctrlKey
window.event.shiftKey
window.event.altKey
 
 
举个简单的例子:如果我们要在页面上将Enter键和Tab键都屏蔽成将光标向下一个表单元素移动,那么可以加入以下代码:
js 代码
  1. if(event.keyCode==13 || event.keyCode==40){   
  2.     event.keyCode=9;   
  3.     CurTabIndex=event.srcElement.tabIndex+1//将当前tabindex的值加1   
  4.     for (n=0;n<insert.elements.length;n++)   
  5.     {   
  6.         if (insert.elements[n].tabIndex==CurTabIndex) //找到下一个表单元素   
  7.         {   
  8.         insert.elements[n].focus(); //移动焦点   
  9.         return true;   
  10.         }   
  11.     }   
  12.   }  
但是,你很快就会发现,上面的代码只有在 IE 上有效,而在 Netscape 上却怎么也得不到你想要的结果,原因是 Netscape 和 IE 在对键盘事件的JS支持上是不同的。对于类似于:event.keyCode 这样的东西只有IE才能够支持,而在 Netscape 上,则采用e.which ,因此,如果你的应用需要支持多浏览器版,需要做的在这里也许仅仅是用e.which 来代替 window.event.keyCode 。
用两种浏览器检查上述实例,你会发现执行结果不总是一样的,这是因为两种浏览器的键盘代码设置不相同,因此你必须使用单独的代码分别来写这段程序(行业垄断和竞争的悲剧呀!--痛苦的可是我们这帮程序员呀......)。
以下是一个在网路上找到的对 IE 和 Netscape 进行分别处理的小程序,通过这段代码可以很容易看出两个浏览器的不同处理方式:
js 代码
  1. function init() {    
  2.    if (ns4) block = document.blockDiv    
  3.    if (ie4) block = blockDiv.style    
  4.    block.xpos = parseInt(block.left)    
  5.    block.active = false    
  6.    document.onkeydown = keyDown    
  7.    document.onkeyup = keyUp    
  8.    if (ns4) document.captureEvents(Event.KEYDOWN | Event.KEYUP)    
  9.  }    
  10.  function keyDown(e) {    
  11.    if (ns4) {var nKey=e.which; var ieKey=0}    
  12.    if (ie4) {var ieKey=event.keyCode; var nKey=0}    
  13.    if ((nKey==97 || ieKey==65) && !block.active) { // if "A" key is pressed    
  14.      block.active = true slide()    
  15.    }    
  16.  }    
  17.  function keyUp(e) {    
  18.    if (ns4) {var nKey=e.which; var ieKey=0}    
  19.    if (ie4) {var ieKey=event.keyCode; var nKey=0}    
  20.    if (nKey==97 || ieKey==65) {    
  21.    block.active = false // if "A" key is released    
  22.    }    
  23.  }    
  24.  function slide() {    
  25.     if (block.active) {    
  26.      block.xpos += 5    
  27.      block.left = block.xpos    
  28.      status = block.xpos // not needed, just for show    
  29.      setTimeout("slide()",30)    
  30.     }    
  31.  }   
分享到:
评论
1 楼 chnmgs 2008-09-03  
[flash=200,200][/flash][url][/url][img][/img]

    [*]

    [*]
引用
[u][/u][i][/i][b][/b]

相关推荐

    javascript键盘事件全面控制脚本代码.docx

    1. **捕获键盘事件**:可以通过为元素添加事件监听器来捕获键盘事件。 2. **阻止默认行为**:有时我们需要阻止浏览器对某些键的默认行为,例如阻止`Enter`键提交表单,可以使用`event.preventDefault()`。 3. **判断...

    Javascript软键盘

    1. 自定义脚本:开发者可以手动编写JavaScript代码,定义键盘布局、按键功能以及响应用户交互的事件处理函数。这种方法需要一定的JavaScript基础,但具有高度的灵活性和可定制性。 2. 使用现成的库:市面上存在许多...

    Javascript脚本实例(几百个各种脚本分类

    本资源"Javascript脚本实例(几百个各种脚本分类"提供了一个丰富的实例库,涵盖了JavaScript的各种应用场景和技巧。 首先,我们要理解JavaScript的基础知识。它由Brendan Eich在1995年为Netscape Navigator浏览器...

    采用纯js脚本实现的键盘输入模拟器脚本源码例子

    首先,让我们了解一下JavaScript如何处理键盘事件。在JavaScript中,我们可以监听键盘事件,如`keydown`、`keyup`和`keypress`。这些事件在用户按下、释放或敲击键时触发。通过监听这些事件,开发者可以捕获到用户的...

    JavaScript实现的软键盘

    总结来说,JavaScript实现的软键盘是一项结合了事件处理、DOM操作、用户交互设计和安全考量的技术,它在无物理键盘的环境中提供了重要的输入途径。理解和掌握这一技术对于提升网页应用的用户体验和安全性至关重要。

    javascript脚本收藏

    这个"javascript脚本收藏"包含了一系列的JavaScript源代码和实现实例,旨在帮助开发者和学习者深入理解和掌握JavaScript的各种功能和应用。 1. **基础语法**:JavaScript的基础包括变量声明(var、let、const)、...

    Javascript脚本技术-期末考试.zip

    事件监听、事件冒泡和事件捕获是理解事件处理机制的关键。 5. **DOM操作**:Document Object Model(DOM)是HTML和XML文档的编程接口。JavaScript可以使用DOM API来修改页面元素、添加新元素、删除元素,以及获取...

    Javascript模拟键盘事件

    要模拟这些键盘事件,我们可以利用`dispatchEvent`方法。这个方法允许我们创建并触发自定义事件。下面是如何模拟一个`keydown`事件的例子: ```javascript // 创建一个新的keydown事件 var event = new ...

    javascript键盘事件全面控制脚本代码

    此外,文章还提到了一些编程相关的术语,如“AS”,“asc”,“c”,“ip”,“java”,“javas”,“javascript”,“pt”,“rip”,“sc”,“script”,“事件”,“脚本”,“键盘事件”,这些都是编程语言或者...

    几种模拟键盘按键的方法

    在JavaScript中,可以利用浏览器的`KeyboardEvent`构造函数来模拟键盘事件,但这通常仅限于Web环境。 5. **安全性与合法性** 模拟键盘按键可能会涉及到安全问题,因为它可以被滥用来进行恶意操作,比如键盘记录...

    JavaScript键盘事件常见用法实例分析

    在JavaScript中,键盘事件是用户与网页交互的重要方式之一。JavaScript键盘事件通常涉及用户的按键操作,如按键按下(keydown)、按键弹起(keyup)和特定的按键动作(keypress)。这些事件使得开发者可以响应用户的...

    鼠标触发的事件,JS脚本

    例如,我们可以使用 onKeyDown 事件来捕获键盘输入,并使用 onMouseMove 事件来捕获鼠标移动事件。 1. onKeyPress:当键盘上的某个键被按下并且释放时触发的事件。 2. onKeyDown:当键盘上的某个键被按下时触发的...

    js连连看,javascript脚本写的一款小游戏

    1. **事件处理**:JavaScript通过监听用户的各种交互,如鼠标点击、键盘输入等,来控制游戏流程。例如,在连连看游戏中,玩家点击两个相同的图案,JavaScript会捕获这些点击事件,并进行相应的匹配逻辑判断。 2. **...

    javascript的事件大全

    2. 键盘事件: - onKeyPress:当用户按下并释放一个键时触发,通常用于检测特殊键(如回车、空格)的按下。 - onKeyDown:当用户按下键盘上的任意键时触发,可用于实现快捷键功能。 - onKeyUp:当用户释放键盘上...

    javascript实例应用---鼠标键盘类.rar

    在这个“javascript实例应用---鼠标键盘类.rar”压缩包中,我们很可能会找到一系列与鼠标和键盘事件相关的JavaScript代码示例,这些都是创建交互式网页的关键技术。 在JavaScript中,鼠标事件和键盘事件是两个重要...

    javascript实现的outlook事件日视图

    例如,通过JavaScript,我们可以监听鼠标拖放事件,捕获开始拖动、拖动中和释放时的状态,进而更新事件的位置。不过,描述中提到算法需要优化处理,这可能指的是在拖放过程中,保持事件的时间准确性、防止重叠以及...

    JavaScript中的所有on事件

    以上事件涵盖了JavaScript中几乎所有可能的交互场景,通过合理利用这些事件,开发者可以构建出高度互动、用户体验良好的Web应用程序。然而,值得注意的是,并非所有浏览器都支持所有事件类型,因此在实际开发中,应...

    一款用JS编写的软键盘输入密码

    关于“软键盘,JS编写的软键盘”的标签,进一步强调了这个功能的核心是利用JavaScript实现。JavaScript是一种广泛用于前端开发的脚本语言,它可以在浏览器端运行,提供实时的交互性。利用JavaScript编写软键盘,可以...

    jQuery javaScript捕获回车事件(示例代码)

    标题中提到的是“jQuery javaScript捕获回车事件(示例代码)”,这里指的是使用jQuery库来处理JavaScript中的回车键事件,通过编写示例代码的形式,给出实现该功能的具体方法。在了解这个知识点之前,我们需要对...

    js 虚拟键盘 支持中英文切换 高灵敏度

    JavaScript(简称JS)虚拟键盘是一种基于Web的解决方案,它允许用户在网页上输入文本,尤其适用于触屏设备或需要安全输入的场景。标题中的“支持中英文切换”意味着这款虚拟键盘具备了输入中文和英文字符的功能,这...

Global site tag (gtag.js) - Google Analytics