作家
登录

IE6下focus与blur错乱的解决方案

作者: 来源:www.28hudong.com 2013-03-30 00:47:18 阅读 我要评论

复制代码 代码如下: <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,但能保证窗口状态的正确性。 方法可能有点山寨,不过一时没想到更好的办法,这样也暂时能解个燃眉之急。

  推荐阅读

  JS 控制小数位数的实现代码

昨天在用JS对前台浮点数进行合算时发现: 0.05+1.08=1.1300000000000001   上网查一查的确存在这种Bug,除了位数上控制之外也没什么也好的方法(希望高手能提出 其它思路)。   于是自己编写一个控制小数位数的>>>详细阅读


本文标题:IE6下focus与blur错乱的解决方案

地址:http://www.17bianji.com/kaifa2/JS/24322.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)