当前位置: 首页 > 图文教程 > 网络编程 > Javascript > javascript的键盘控制事件说明

Javascript
javascript中的有名函数和无名函数
javascript[js]获取url参数的代码
javascript select 之间传值效果的代码
js正则实现的密码框简单制作,还可以替换成自己想用得符号
脚本控制自适应高度的缩短问题
兼容ie和firefox版本的js反选 全选 多选框
javascript 随机数 与高级应用 附vbscript(asp) 随机数总结
不用确认即可打印的javascript代码
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
用javascript实现div可编辑的常见方法
用JavaScript实现的一个IP地址输入框
用javascript取得传递参数的个数的代码
当鼠标移出灰色区域时候,菜单项怎么隐藏起来
才发现的超链接js导致网页中GIF动画停止的解决方法
javascript window.onerror事件学习新收获
javascript 如何生成不重复的随机数
超个性的导航效果
不能再简单的无闪刷新验证码原理很简单
经常用到的javascript验证函数收集
用js实现手把手教你月入万刀(转贴)

Javascript 中的 javascript的键盘控制事件说明


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 212 ::
收藏到网摘: n/a

获取键盘控制事件是实现交互性最有力的方法之一。  首先需要了解的是如何初始化该事件,基本语句如下:
 document.onkeydown = keyDown
 当浏览器读到这个语句时,无论按下键盘上的哪个键,都将呼叫
KeyDown()函数。
 捕获键盘事件对于不同的浏览器来说有点困难,我们分别的来学
习不同浏览器的实现语句。
 Netscape
 Netscape的程序实现要比IE麻烦,你必须放一个特别的语句,来
使Netscape始终去检查击键事件,如果没有这行语句,击键事件将与
按下鼠标事件搞混。特别语句如下:
 document.onkeydown = keyDown
if (ns4) document.captureEvents(Event.KEYDOWN)
 keyDown()函数有一个隐藏的变量--一般的,我们使用字母“e”
来表示这个函数。
 function keyDown(e)
  变量e表示发生击键事件,寻找是哪个键被按下,使用以下属性

  e.which
  这将给出该键的索引值,把索引值转化成该键的字母或数字值,
写:
  String.fromCharCode(e.which)
  把上面的语句放在一起,我们可以知道被按下的是哪一个键:
function keyDown(e) {
 var keycode = e.which
 var realkey = String.fromCharCode(e.which)
 alert("keycode: " + keycode + " realkey: " + realkey)
}
document.onkeydown = keyDown
document.captureEvents(Event.KEYDOWN)
 Internet Explorer
 IE的程序与Netscape类似,但它不需要e变量,用
window.event.keyCode来代替e.which,把键的索引值转化为真实键值
方法类似:String.fromCharCode(event.keyCode),程序如下:
 function keyDown() {
 var keycode = event.keyCode
 var realkey = String.fromCharCode(event.keyCode)
 alert("keycode: " + keycode + " realkey: " + realkey)
}
document.onkeydown = keyDown
document.onkeydown = keyDown
 适用于两者的程序
 用两种浏览器检查上述实例,你会发现执行结果不总是一样的,
这是因为两种浏览器的键盘代码设置不相同,因此你必须使用单独的
代码分别来写这段程序,而毫无别法。
 建议你要完全忘掉实际的键值,仅仅使用键盘的代码值来工作。
下面这段程序将视情况而设置,如果是用IE的话,ieKey生效,把nKey
设为0,如果是用Netscape的话,nKey生效,把nKey设为0,然后用一
个警示框来显示两者的值:
   function keyDown(e) {
  if (ns4) {
   var nKey=e.which;
   var ieKey=0
  }
  if (ie4) {
   var ieKey=event.keyCode;
   var nKey=0
  }
  alert("nKey:"+nKey+" ieKey:" + ieKey)
}
document.onkeydown = keyDown
if (ns4) document.captureEvents(Event.KEYDOWN)
 使用键盘移动对象
 下面的程序实现用键盘移动对象,程序将检查哪一个键被按下,
从而调用相应的函数来移动对象。本例中,当字母“A”被按下时,对
象就开始移动,字母“A”键在nKey中的值是97,ieKey的值为65,在
程序中将分别检查这两个值。
   function init() {
  if (ns4) block = document.blockDiv
  if (ie4) block = blockDiv.style
  block.xpos = parseInt(block.left)
  document.onkeydown = keyDown
  if (ns4) document.captureEvents(Event.KEYDOWN)
}
function keyDown(e) {
  if (ns4) { var nKey=e.which; var ieKey=0 }
  if (ie4) { var ieKey=event.keyCode; var nKey=0 }
  if (nKey==97 || ieKey==65) { // 如果"A"键按下
    slide()
  }
}
function slide() {
  block.xpos += 5
  block.left = block.xpos
  status = block.xpos // 这一句不一定需要,只是为了检查状

  setTimeout("slide()",30)
}
 增加 "Active"变量
 上面程序稍微有些不足,对象移动以后就无法使它停止了,而且
当你多按几次A键时,物体将运动得越来越快,这里我们来修补它。
 使用变量"active"来改变这种情况,插入if语句来检查函数是否
重复。
   function slide() {
  if (myobj.active) {
  myobj.xpos += 5
  myojb.left = myobj.xpos
  setTimeout("slide()",30)
  }
}
 在这种情况中,slide()函数只有在myobj.active值为真的时候才
会工作,当myobj.active值为假时,对象将停止移动。
 使用 onKeyUp 和 "Active" 变量
  onkeyup事件和onkeydown事件工作原理相同,用以下语句初始化该
事件:
document.onkeydown = keyDown
document.onkeyup = keyUp
if (ns4) document.captureEvents(Event.KEYDOWN |
Event.KEYUP)
keyUp() 函数与之相同,当一个键被放开时事件被激发,对象停止
移动,并将active变量置为0:
   function keyUp(e) {
  if (ns4) var nKey = e.which
  if (ie4) var ieKey = window.event.keyCode
  if (nKey==97 || ieKey==65)
  block.active = false
}
 下面是比较完整的程序:
   function init() {
  if (ns4) block = document.blockDiv
  if (ie4) block = blockDiv.style
  block.xpos = parseInt(block.left)
  block.active = false
  document.onkeydown = keyDown
  document.onkeyup = keyUp
  if (ns4) document.captureEvents(Event.KEYDOWN |
Event.KEYUP)
}
function keyDown(e) {
  if (ns4) {var nKey=e.which; var ieKey=0}
  if (ie4) {var ieKey=event.keyCode; var nKey=0}
  if ((nKey==97 || ieKey==65) && !block.active) { // if
"A" key is pressed
    block.active = true slide()
  }
}
function keyUp(e) {
  if (ns4) {var nKey=e.which; var ieKey=0}