2016-10-11 7 views
0

イベントリスナーでは、私はe.keyを使用していますが、多くの古いブラウザではサポートされていないようです。私はそのe.keyCodeを読み、e.whichできhttps://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCodehttps://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/whichからほとんどのブラウザでe.keyはサポートされていません

e.keyのために廃止されているので、私はe.keyを使用したいのですが、いくつかのブラウザがそれをサポートしていないとき、私は何をすべきでしょうか?

私は

const key = e.key || String.fromCharCode(e.keyCode); 

を使うべきちょうどキーは、例えば、カンマであれば、彼らは私に同じ結果が得られていないようです。彼らは、同じ文字を返す必要があります

if (e.key) { 
    var key = e.key; 
} else { 
    var code = e.which || e.keyCode; 
    var key = String.fromCharCode(code); 
} 

時間内にすべてのブラウザでサポートされます好適e.keyで始まる、それらすべてをチェックすることにより、サポートされている方は、使用

+0

どのブラウザをサポートしますか? – Halcyon

+0

私はちょうど最新バージョンのChromeで開発しましたが、今は51の代わりにChrome 47を搭載したコンピュータ上にあり、 'e.key'をサポートしていません – Jamgreen

答えて

0

document.getElementById('test').addEventListener('keypress', function(e) { 
 
    var code = e.which || e.keyCode; 
 
    var key = String.fromCharCode(code); 
 
    
 
    console.log(key, e.key) 
 
});
<p>Type in the input !</p> 
 
<input id="test">

keyupおよび​​イベントは特定のキーに対して異なるキーコードを返します。

+0

しかし' e.key'と 'e.keyCode'同じではありません – Jamgreen

+0

@Jamgreen - ほとんどのキャラクターにとって、ほとんどのブラウザーで、同じことが返されます。もしそれを標準化してマップを作成したいのであれば、ここでは良い概観 - > http://unixpapa.com/js/key.html – adeneo

+0

しかし 'e.key'は文字を表示します。他の2人がコードを印刷します。 – Jamgreen

関連する問題