不同的浏览器中的事件监听机制是不同的,以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),就可以取出按下的值了。
本文探讨了不同浏览器中事件监听机制的差异,特别是onKeyPress事件在IE与Firefox中的表现不一致问题,并提供了一种使用JQuery统一处理的方法。
843

被折叠的 条评论
为什么被折叠?



