Opera浏览器在输入法开启情况下无法触发键盘事件的解决办法——轮询

之前写过Opera浏览器在输入法开启情况下无法触发键盘事件的解决办法——oninput事件。点这里

这个问题的解决办法主流的有两种,一种是用oninput事件代替keydown事件来监测键盘动作,另一种是采用轮询的方法监测输入框值变化。使用轮询的方法会稍微影响性能,这个应该很容易理解。

之后我在陈广琛的博客上看到他也提到轮询的方法,针对Opera和Firefox for Mac两种“特殊”的浏览器,他给出了以下代码:

 1 var timer;
2 var imeKey = (UA.Opera == 0) ? 229 : 197;
3
4 function keydownHandler (e) {
5 clearInterval(timer)
6 if (e.keyCode == imeKey || UA.Firefox > 0 && UA.OS == 'Macintosh') {
7 timer = setInterval(checkTextValue, 50);
8 } else {
9 checkTextValue();
10 }
11 }
12
13 function checkTextValue() {
14 /* handle input text change */
15 }

 

传送门:在 JavaScript 中监听 IME 键盘输入事件

posted @ 2011-10-21 14:16  hyven  阅读(309)  评论(0编辑  收藏  举报