我在我的應用程序中使用iframe
。當我按下鍵盤上的任何鍵時,我返回字符串值。按下鍵碼不會返回預期的字符串值
除鑰匙219 ,220, 221
之外的所有其他鍵均返回預期字符串值。這些值返回"Û", "Û", "Ý"
這些值。
但我預計"[", "]", "\"
這些字符串值。
如何從這些鍵中獲得正確的字符?
我在我的應用程序中使用iframe
。當我按下鍵盤上的任何鍵時,我返回字符串值。按下鍵碼不會返回預期的字符串值
除鑰匙219 ,220, 221
之外的所有其他鍵均返回預期字符串值。這些值返回"Û", "Û", "Ý"
這些值。
但我預計"[", "]", "\"
這些字符串值。
如何從這些鍵中獲得正確的字符?
和keyup
根據您輸入的鍵盤類型(不同區域的不同鍵盤等),使用可能因鍵盤而異的鍵碼。
對於打印的字符,你需要等待瀏覽器發出keypress
,它給你的關鍵角色的翻譯值(如果有的話),它爲您提供了charCode
(雖然paranoically我傾向於做e.charCode || e.which
;也許這很愚蠢)。例如,我的鍵盤上有一個按鍵,在* nix的配置下,是/keyup
的鍵碼220,並生成字符£
。但是在運行帶有不同鍵盤佈局的Windows的虛擬機中,同一個鍵是/keyup
的鍵碼220,但生成字符#
。
例子:
function handler(e) {
var msg = "Received " + e.type;
if (e.type === "keypress") {
// keypress
msg += " '" + String.fromCharCode(e.charCode || e.which) + "'";
} else {
// keydown/keyup
msg += " " + (e.which || e.keyCode);
}
console.log(msg);
}
document.addEventListener("keydown", handler, false);
document.addEventListener("keyup", handler, false);
document.addEventListener("keypress", handler, false);
Click here to focus the document, then press keys.
這是關於經驗.. ___〜25年____ – Rayon
你能分享您的問題小提琴。 – sameer
不應該是'91','93'和'92'嗎? –
@sameer他說的是部分正確的。你不需要小提琴。 –