不同的浏览器中的事件监听机制是不同的,以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),就可以取出按下的值了。