Heim  >  Artikel  >  Web-Frontend  >  IE6下focus与blur错乱的解决方案_javascript技巧

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

WBOY
WBOYOriginal
2016-05-16 18:04:03958Durchsuche
复制代码 代码如下:



hello
<script> <BR>window.onblur=function(){ <BR>document.title= 'blur:' + Math.random() ; <BR>} <BR>window.onfocus=function(){ <BR>document.title= 'focus:' + Math.random() ; <BR>} <BR></script>


这应该是一个很常见的需求,例如,当前窗口定期更新数据,而窗口失焦则减少信息更新频率。IE6的bug导致的配对混乱却会打乱我们的计划。
上网查也没查出关于这个bug的官方说明与推荐解决方案,只好自己生更的实现一个解决方案。
代码如下:
复制代码 代码如下:



hello
<script> <BR>(function(){ <BR>var focusTimer = 0; <BR>function myBlur(){ <BR>document.title= 'blur:' + Math.random() ; <BR>} <BR>function myFocus(){ <BR>clearTimeout(focusTimer); <BR>focusTimer = setTimeout(function(){ <BR>document.title = 'focus:' + Math.random() ; <BR>},10); <BR>} <BR>window.onfocus = document.body.onfocusin = myFocus; <BR>window.onblur = document.body.onfocusout = myBlur; <BR>}()); <BR></script>


大略原理是:找到很多可能触发onfocus与onblur的时机,所有的onblur都立即执行,而onfocus则延时10毫秒懒惰执行。
结果是:虽说有时多执行了几次myFocus与myBlur,但能保证窗口状态的正确性。
方法可能有点山寨,不过一时没想到更好的办法,这样也暂时能解个燃眉之急。
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn