精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>网络专区>>● 网站建设>>盖世神功 — 网站建设技术>>Java Script — 来一杯热咖啡>>javascript中怎样确定用户按下的键盘键?

主题:javascript中怎样确定用户按下的键盘键?
发信人: skydome()
整理人: (2000-05-16 23:35:37), 站内信件
【 在 jutty (麻辣串) 的大作中提到: 】
: 请问:
: javascript中怎样确定用户按下的键盘键?
: 怎样跟踪?
这个问题的处理在IE和NC里是不同的,我们必须针对两种浏览器来写javascript
。不过共同要做的是初始化事件,这里是对onkeydown事件进行初始化:
document.onkeydown=keyDown
加入这行代码,告诉浏览器当键盘被按下时,调用keyDown()函数(这里的keyDo
wn函数是自己定义的)。
在NC里,由于其采用了事件指针,所以我们必须加入一段代码来让NC一直检查ke
ydown事件,不然当别的事件(如mousedown)发生时,会发生混乱,代码如下:
     document.onkeydown=keyDown
     if(NC)document.captureEvents(Event.KEYDOWN) //NC是一个变量,用来简
要标志浏览器是否NC,NC=(document.layers)?1:0;相应的,IE=(document.all
)?1:0;
然后我们可以开始定义keyDown()函数,在这里,我们需要跳过一个隐含变量,以
e来代替,
     function keyDown(e)
这里的e代表了刚才被按下的键,如果要知道被按下了什么键,可以用which属性
,例如e.which就表示所按下的键的代码,如果要还原代码的话,可以用String.
fromCharCode(e.which),因此,在NC里,keyDown()函数代码可以这样定义:
     function keyDown(e)
   { var kCode=e.which
     var realKey=String.fromCharCode(kCode)
     ……//在这里加入你自己的代码;
   }
而在IE里,我们可以跳过那该死的"e"值,而直接使用window.event.keyCode来代
替e.which,至于还原的方法,还是一样的:String.fromCharCode(event.keyCo
de),所以,keyDown()在IE里的写法就是:
     function keyDown()
   { var kCode=window.event.keyCode
     var realKey=String.fromCharCode(kCode)
     ……//加入自己的代码
   }
到这里,两种浏览器对键盘的处理大概大家都有个初步的认识了,大家也可以试
着把其综合起来,也不难实现。看来两大浏览器之争实在是令我们伤透脑筋,不
过看来胜负渐分了,呵呵,本来我是为IE叫好的,因为IE对CSS的支持不像NC那样
莫名其妙,可是小弟我最近正在摸索linux,所以浏览器也就跟着改为……,呜呜
,真伤脑筋啊,还有一点要说的是,两种浏览器对键盘的处理各有优劣,NC能够
区分字母的大小写,IE不行;而IE能识别CTRL、ALT、SHIFT和方向键等,NC却不
行,在处理的过程中要加以注意。

--
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.104.40.137]

[关闭][返回]