JavaScript Event学习第十一章 按键的检测_javascript技巧
第一个问题是对于按键事件来说根本就没有标准,按照规范说的:包含键盘等输入设备的事件模型会在以后的DOM规范中作出解释。
正如我们了解到的,浏览器在最开始设计的时候并没有一个标准,大家都像做实验似的,最后的成品虽然是有用的,但是肯定造成了兼容性的问题。按键问题也不例外:这里有两个属性能检测到用户按下了什么键,虽然有足够的理由为什么需要两个属性,但是依然并不是所有的浏览器都支持。
另外,在keypress与keydown和keyup之间还有一些很重要的区别。
最后就是windows和mac的区别了,在mac上要检测用户按下了什么键简直比在windows下难了N倍。
keyCode和charCode
能检测到用户按下了什么键的两个属性就是keyCode和charCode了。简单说来:keyCode是用来检测用户真正按下了键盘上那个键的,而charCode则是给出键入字符的ASCII码。有一些小问题需要注意:大写的A和小写的a的keyCode是一样的,因为他们在键盘上就是一个键;但是charCode不一样,因为他俩是两个不同的字符。
IE和Opera不支持charCode。然而他们会在keyCode里面保存字符信息,但是只是在onkeypress的情况下,在onkeydown/up情况下包含的是键的信息。
字符和数字键
让我们以一个简单的例子开始。小写a的ASCII码是97,大写的是65。那么在两种情况下,当用户在键盘上敲下相同的键的时候,什么时候的键值是65呢(相当于大写的A)
keyCode
charCode
因此,在onkeydown/up的情况下,你能够从keyCode里面得到键值。在onkeypress情况下,想要得到字符值就要使用:evt.charCode || evt.keyCode.
标点符号
我还是决定不对标点符号键做测试了。我怀疑这不仅跟浏览器和操作系统有关,还可能跟键盘设置和默认语言有关。我一般用的是荷兰语版的windows,如果跟美国版的101键的键盘相比有很大出入,我一点都不会觉得意外。
比如说shift+,键出来的应该是
特别键
功能键就是只那些不能打印出来的但是却具有一定功能的键。比如shift、ESC、enter等等都是功能键。
一些说明:
1、一般,mac的可靠性比windows要差,有些键可能检测不到
2、IE不会触发下面这键的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)

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

i77700的效能運行win11完全足夠,但是用戶卻發現自己的i77700不能升級win11,這主要是受到了微軟硬性條件的限制,所以只要跳過該限制就能安裝了。 i77700不能升級win11:1、因為微軟限制了cpu的版本。 2.intel只有第八代以上版本可以直升win11。3、而i77700作為7代,無法滿足win11的升級需求。 4.但是i77700在性能上是完全能流暢使用win11的。 5.所以大家可以使用本站的win11直裝系統。 6.下載完成後,右鍵「裝載」該檔案。 7.再雙擊運行其中的「一鍵

哈嘍,大家好。今天就跟大家分享一個摔倒偵測項目,確切地說是基於骨骼點的人體動作辨識。大概分為三個步驟辨識人體辨識人體骨骼點動作分類項目源碼已經打包好了,取得方式見文末。 0. chatgpt首先,我們需要取得監控的視訊串流。這段程式碼比較固定,我們可以直接讓chatgpt完成chatgpt寫的這段程式碼是沒有問題的,可以直接使用。但後面涉及業務型任務,例如:用mediapipe識別人體骨骼點,chatgpt給的代碼是不對的。我覺得chatgpt可以當作一個工具箱,能獨立於業務邏輯,都可以試著交給c

很多朋友對手機按鍵震動這個功能並不太喜歡,主要是因為它並不實用,而且相對來說還會增加耗電。今天我為大家帶來了紅米K40Pro按鍵震動關閉的方法,以及Redmi手機返回鍵的設定教學。對於紅米K40Pro按鍵震動關閉的方法,你可以按照以下步驟進行操作:1.開啟手機的設定選單。 2.在設定選單中,找到「聲音和振動」選項。 3.在「聲音和振動」選項中,找到「按鍵振動」設定。 4.點選「按鍵振動」設置,然後關閉該功能即可。對於Redmi手機返回鍵的設置,你可以按照以下步驟進行:1.打開手機的設定選單。 2.在

相信許多玩遊戲的朋友都遇到過按下shift就打字的問題,這是由於系統預設的輸入法切換按鍵就是shift,因此我們可以透過修改按鍵的方法來解決這個問題,下面就跟著小編一起來試試看。 win11玩遊戲一按shift就打字:第一步,按下鍵盤「Win」+「i」開啟設定。第二步,點選左邊欄的「時間和語言」第三步,進入右邊的「輸入」設定。第四步,開啟其中的「進階鍵盤設定」第五步,點選切換輸入法下的「輸入語言熱鍵」按鈕。第六步,在彈出視窗中點選「變更按鍵順序」第七步,將切換輸入語言變更為「未指派」並確定儲存即

今天要為大家介紹一篇MIT上週發表的文章,使用GPT-3.5-turbo解決時間序列異常檢測問題,初步驗證了LLM在時間序列異常檢測的有效性。整個過程沒有進行finetune,直接使用GPT-3.5-turbo進行異常檢測,文中的核心是如何將時間序列轉換成GPT-3.5-turbo可辨識的輸入,以及如何設計prompt或pipeline讓LLM解決異常檢測任務。下面跟大家詳細介紹一下這篇工作。圖片論文標題:Largelanguagemodelscanbezero-shotanomalydete

01前景概要目前,難以在檢測效率和檢測結果之間取得適當的平衡。我們研究了一種用於高解析度光學遙感影像中目標偵測的增強YOLOv5演算法,利用多層特徵金字塔、多重偵測頭策略和混合注意力模組來提高光學遙感影像的目標偵測網路的效果。根據SIMD資料集,新演算法的mAP比YOLOv5好2.2%,比YOLOX好8.48%,在偵測結果和速度之間達到了更好的平衡。 02背景&動機隨著遠感技術的快速發展,高解析度光學遠感影像已被用於描述地球表面的許多物體,包括飛機、汽車、建築物等。目標檢測在遠感影像的解釋中

隨著現代Web應用不斷發展,PHP作為其中最受歡迎的程式語言之一,被廣泛地應用於網站開發中。但在開發過程中,經常會遇到空值錯誤,而這些錯誤會導致應用程式拋出異常,進而影響使用者的使用體驗。因此,在PHP開發過程中,如何偵測和處理空值錯誤,是程式設計師需要掌握的重要技能。一、什麼是空值錯誤在PHP開發過程中,空值錯誤通常指的是兩種情況:變數未初始化和變
