亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript Event學(xué)習(xí)第十一章 按鍵的檢測(cè)

 更新時(shí)間:2010年02月10日 23:33:54   作者:  
檢測(cè)用戶的按鍵是事件處理程序的一個(gè)很特別的環(huán)節(jié)。這一章我們著力解決一些非常棘手的問(wèn)題,并且制定一個(gè)完備的表格。
第一個(gè)問(wèn)題是對(duì)于按鍵事件來(lái)說(shuō)根本就沒(méi)有標(biāo)準(zhǔn),按照規(guī)范說(shuō)的:包含鍵盤等輸入設(shè)備的事件模型會(huì)在以后的DOM規(guī)范中作出解釋。

正如我們了解到的,瀏覽器在最開(kāi)始設(shè)計(jì)的時(shí)候并沒(méi)有一個(gè)標(biāo)準(zhǔn),大家都像做實(shí)驗(yàn)似的,最后的成品雖然是有用的,但是肯定造成了兼容性的問(wèn)題。按鍵問(wèn)題也不例外:這里有兩個(gè)屬性能檢測(cè)到用戶按下了什么鍵,雖然有足夠的理由為什么需要兩個(gè)屬性,但是依然并不是所有的瀏覽器都支持。

另外,在keypress與keydown和keyup之間還有一些很重要的區(qū)別。

最后就是windows和mac的區(qū)別了,在mac上要檢測(cè)用戶按下了什么鍵簡(jiǎn)直比在windows下難了N倍。

keyCode和charCode
能檢測(cè)到用戶按下了什么鍵的兩個(gè)屬性就是keyCode和charCode了。簡(jiǎn)單說(shuō)來(lái):keyCode是用來(lái)檢測(cè)用戶真正按下了鍵盤上那個(gè)鍵的,而charCode則是給出鍵入字符的ASCII碼。有一些小問(wèn)題需要注意:大寫的A和小寫的a的keyCode是一樣的,因?yàn)樗麄冊(cè)阪I盤上就是一個(gè)鍵;但是charCode不一樣,因?yàn)樗麄z是兩個(gè)不同的字符。

IE和Opera不支持charCode。然而他們會(huì)在keyCode里面保存字符信息,但是只是在onkeypress的情況下,在onkeydown/up情況下包含的是鍵的信息。

字符和數(shù)字鍵
讓我們以一個(gè)簡(jiǎn)單的例子開(kāi)始。小寫a的ASCII碼是97,大寫的是65。那么在兩種情況下,當(dāng)用戶在鍵盤上敲下相同的鍵的時(shí)候,什么時(shí)候的鍵值是65呢(相當(dāng)于大寫的A)

keyCode

image

 

charCode

image
因此,在onkeydown/up的情況下,你能夠從keyCode里面得到鍵值。在onkeypress情況下,想要得到字符值就要使用:evt.charCode || evt.keyCode.

標(biāo)點(diǎn)符號(hào)
我還是決定不對(duì)標(biāo)點(diǎn)符號(hào)鍵做測(cè)試了。我懷疑這不僅跟瀏覽器和操作系統(tǒng)有關(guān),還可能跟鍵盤設(shè)置和默認(rèn)語(yǔ)言有關(guān)。我一般用的是荷蘭語(yǔ)版的windows,如果跟美國(guó)版的101鍵的鍵盤相比有很大出入,我一點(diǎn)都不會(huì)覺(jué)得意外。

比如說(shuō)shift+,鍵出來(lái)的應(yīng)該是<,但是我測(cè)試的ASCII碼的結(jié)果卻是'?'的。當(dāng)我發(fā)現(xiàn)了這個(gè)問(wèn)題,我決定還是不在標(biāo)點(diǎn)符號(hào)鍵的問(wèn)題上浪費(fèi)時(shí)間了.

特別鍵
功能鍵就是只那些不能打印出來(lái)的但是卻具有一定功能的鍵。比如shift、ESC、enter等等都是功能鍵。

一些說(shuō)明:
1、一般,mac的可靠性比windows要差,有些鍵可能檢測(cè)不到

2、IE不會(huì)觸發(fā)下面這鍵的keypress事件:delete, end, enter, escape, 功能鍵, home, insert, pageUp/Down 和 tab。

3、在onkeypress事件下,Safari會(huì)給下面這些鍵給出很奇怪的keyCode值:delete, end, 功能鍵, home 和 pageUp.Down。但是在onkeydown/up下面就很正常。

4、Alt,Cmd,Ctrl和shfit鍵在mac上無(wú)法探測(cè),不過(guò)Opera下面例外。然而你卻可以使用altKey,ctrlKey,shfitKey這些屬性。

如果你需要探測(cè)這些鍵,你就探測(cè)一下載onkeydown/up下面的keyCode就行了,算是給自己幫忙了,onkeypress和charCode就忘掉吧。

原文后面有個(gè)大的鍵值的列表,還有一個(gè)測(cè)試框,有興趣的童鞋可以移步。
翻譯地址:http://www.quirksmode.org/js/keys.html

轉(zhuǎn)載請(qǐng)保留以下信息
作者:北玉(tw:@rehawk)

相關(guān)文章

最新評(píng)論