IE6下focus与blur错乱的解决方案_Javascript教程-查字典教程网
IE6下focus与blur错乱的解决方案
IE6下focus与blur错乱的解决方案
发布时间:2016-12-30 来源:查字典编辑
摘要:复制代码代码如下:hellowindow.onblur=function(){document.title='blur:'+Math.ran...

复制代码 代码如下:

<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,但能保证窗口状态的正确性。

方法可能有点山寨,不过一时没想到更好的办法,这样也暂时能解个燃眉之急。

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Javascript教程学习
    热门Javascript教程学习
    编程开发子分类