此外,所有的keyCode,which,charCode和keyIdentifier被棄用:
charCode
和keyIdentifier
是非標準的特性。
keyIdentifier
從Chrome 54和Opera 41.0中刪除
keyCode
在FF上的正常字符的按鍵事件上返回0。
The key property:
readonly attribute DOMString key
保持對應於該按鍵的鍵屬性值按
在編寫這本書的時候,key
財產被所有主流瀏覽器的支持:Firefox 52,Chrome 55,Safari 10.1,Opera 46.除Internet Explorer 11以外: 非標準鍵標識符和AltG的不正確行爲拉斐。More info
如果是重要和/或後向兼容性是,那麼就可以使用特徵檢測,如以下代碼:
注意,key
值是從在該keyCode
或which
性質的不同:它包含密鑰的名稱而不是其代碼。如果你的程序需要字符代碼,那麼你可以使用charCodeAt()
。 對於單個可打印字符,您可以使用charCodeAt()
,如果您要處理的鍵值包含多個字符,如ArrowUp 可能是:您正在測試特殊鍵並相應採取相應操作。因此,嘗試推行鍵的值的表和它們對應的 碼charCodeArr["ArrowUp"]=38
,charCodeArr["Enter"]=13
,charCodeArr[Escape]=27
...等,請看一看Key Values及其corresponding codes
if(e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
/* As @Leonid suggeted */
var characterCode = e.which || e.charCode || e.keyCode || 0;
}
/* ... code making use of characterCode variable */
可能要考慮未來是可用的,而他們的相容性,即使用傳統的性能,只有當下跌切換到新的:
if(e.which || e.charCode || e.keyCode){
var characterCode = e.which || e.charCode || e.keyCode;
}else if (e.key!=undefined){
var characterCode = charCodeArr[e.key] || e.key.charCodeAt(0);
}else{
var characterCode = 0;
}
參見:KeyboardEvent.code
財產docs以及answer中的一些更多詳細信息。
你能否請一個正確的答案,所以這個問題不會再出現? –