国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript Event學習第十一章 按鍵的檢測

2019-11-21 00:45:03
字體:
來源:轉載
供稿:網(wǎng)友
第一個問題是對于按鍵事件來說根本就沒有標準,按照規(guī)范說的:包含鍵盤等輸入設備的事件模型會在以后的DOM規(guī)范中作出解釋。

正如我們了解到的,瀏覽器在最開始設計的時候并沒有一個標準,大家都像做實驗似的,最后的成品雖然是有用的,但是肯定造成了兼容性的問題。按鍵問題也不例外:這里有兩個屬性能檢測到用戶按下了什么鍵,雖然有足夠的理由為什么需要兩個屬性,但是依然并不是所有的瀏覽器都支持。

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

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

keyCode和charCode
能檢測到用戶按下了什么鍵的兩個屬性就是keyCode和charCode了。簡單說來:keyCode是用來檢測用戶真正按下了鍵盤上那個鍵的,而charCode則是給出鍵入字符的ASCII碼。有一些小問題需要注意:大寫的A和小寫的a的keyCode是一樣的,因為他們在鍵盤上就是一個鍵;但是charCode不一樣,因為他倆是兩個不同的字符。

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

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

keyCode

image

 

charCode

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

標點符號
我還是決定不對標點符號鍵做測試了。我懷疑這不僅跟瀏覽器和操作系統(tǒng)有關,還可能跟鍵盤設置和默認語言有關。我一般用的是荷蘭語版的windows,如果跟美國版的101鍵的鍵盤相比有很大出入,我一點都不會覺得意外。

比如說shift+,鍵出來的應該是<,但是我測試的ASCII碼的結果卻是'?'的。當我發(fā)現(xiàn)了這個問題,我決定還是不在標點符號鍵的問題上浪費時間了.

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

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

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

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

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

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

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

轉載請保留以下信息
作者:北玉(tw:@rehawk)

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 勐海县| 津市市| 泗洪县| 岳阳县| 东乌珠穆沁旗| 克拉玛依市| 宁国市| 措美县| 泰和县| 台山市| 明溪县| 温宿县| 五华县| 珠海市| 牡丹江市| 晋江市| 乐至县| 马山县| 林甸县| 封开县| 霞浦县| 宝坻区| 泸水县| 杂多县| 金寨县| 白银市| 新乡市| 潢川县| 玉林市| 牟定县| 烟台市| 高邑县| 河源市| 平陆县| 邵阳县| 正宁县| 萝北县| 新余市| 嘉黎县| 芒康县| 连云港市|