IE6下focus与blur错乱的解决方案
复制代码 代码如下: body textarea/textarea hello script window.onblur=function(){ document.title= ’blur:’ + Math.random() ; } window.onfocus=function(){ document.title= ’focus:’ + Math.random() ; } /script /body 这应该是一个很常见的需求,例如,当前窗口定期更新数据,而窗口失焦则减少信息更新频率。IE6的bug导致的配对混乱却会打乱我们的计划。 上网查也没查出关于这个bug的官方说明与推荐解决方案,只好自己生更的实现一个解决方案。 代码如下: 复制代码 代码如下: body textarea/textarea hello script (function(){ var focusTimer = 0; function myBlur(){ document.title= ’blur:’ + Math.random() ; } function myFocus(){ clearTimeout(focusTimer); focusTimer = setTimeout(function(){ document.title = ’focus:’ + Math.random() ; },10); } window.onfocus = document.body.onfocusin = myFocus; window.onblur = document.body.onfocusout = myBlur; }()); /script /body 大略原理是:找到很多可能触发onfocus与onblur的时机,所有的onblur都立即执行,而onfocus则延时10毫秒懒惰执行。 结果是:虽说有时多执行了几次myFocus与myBlur,但能保证窗口状态的正确性。 方法可能有点山寨,不过一时没想到更好的办法,这样也暂时能解个燃眉之急。
相关文章:
热门推荐
- IE6下js通过css隐藏select的一个bug
- 1.JSP 中request中getParameter与getAttribute区别
- 2.浏览器兼容之旅第三站:IE常见Bug总结及修复方法—part1
- 3.ie6中li插入图片后下方有空隙(经典bug)多种解决方法
- 4.DIV+CSS相对IE6 IE7和IE8浏览器行为区别及兼容性问题整理
- 5.解决ie6下3像素bug问题
- 6.C#语言入门:for循环语句
- 7.IE6 弹出Iframe层中的文本框“经常”无法获得输入焦点
- 8.IE6下css设置容器高度的BUG不能小于某个值
- 9.C语言 while语句的用法
- 10.JavaScript如何在网页上使用history和forward