发信人: 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]
|
|