2016-08-09 59 views
1

我在我的應用程序中使用iframe。當我按下鍵盤上的任何鍵時,我返回字符串值。按下鍵碼不會返回預期的字符串值

除鑰匙219 ,220, 221之外的所有其他鍵均返回預期字符串值。這些值返回"Û", "Û", "Ý"這些值。

但我預計"[", "]", "\"這些字符串值。

如何從這些鍵中獲得正確的字符?

+0

你能分享您的問題小提琴。 – sameer

+0

不應該是'91','93'和'92'嗎? –

+0

@sameer他說的是部分正確的。你不需要小提琴。 –

回答

3

​​和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.

+2

這是關於經驗.. ___〜25年____ – Rayon