JavaScriptリスニングtextareaのキー


異なるブラウザでのイベントリスニングメカニズムは、onKeyPressイベントを例に挙げて異なります.
textareaがあり、
<textarea id="text"></textarea>

常にonKeyPress="keypress();"を定義し、以下の方法を定義します.
var keypress = function(){
    var k = window.event.keyCode;
}

実際にはfirefoxでは無効です.
では、次のように変更します.
    onKeyPress="keypress(event);"
var keypress = function(event){
    var k = event.keyCode;
}

やはり問題があり、kを押すとIEで107、FFで0となる.
keyCodeをcharCodeに変更してみます.
var k = event.charCode;

IEはundefined、FFは107
判断できるかもしれない
if( IE)
    var k = event.keyCode;
else if( FF)
    var k = event.charCode;

 
しかし、結合キーがあれば、この方法もだめです.
Ctrl+kを押すと、
IEではkeyCodeは11、charCodeはundefined
FFではkeyCodeが0、charCodeが107
 
ここで私が使っている方法はJQueryです.
    $("#text").bind("keyPress",function(event){
         var k = event.which;
    });

ここで使用するwhichはIEでもFFでもシングルボタンでもコンビネーションキーでも107の値です
次にStringを使用する.fromCharCode(k)では、押した値を取り出すことができます.