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


Posted in Javascript onJuly 31, 2011
<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 隔行换色函数代码
Oct 24 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
为开发者准备的10款最好的jQuery日历插件
Feb 04 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
Mar 18 Javascript
Angularjs中的页面访问权限怎么设置
Nov 11 Javascript
angularjs定时任务的设置与清除示例
Jun 02 Javascript
js中let和var定义变量的区别
Feb 08 Javascript
js自定义input文件上传样式
Oct 26 Javascript
Layui实现主窗口和Iframe层参数传递
Nov 14 Javascript
js、jquery实现列表模糊搜索功能过程解析
Mar 27 jQuery
详解使用mocha对webpack打包的项目进行&quot;冒烟测试&quot;的大致流程
Apr 27 Javascript
原生js实现照片墙效果
Oct 13 Javascript
EXTJS记事本 当CompositeField遇上RowEditor
Jul 31 #Javascript
Javascript 类、命名空间、代码组织代码
Jul 31 #Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
Jul 31 #Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
Jul 31 #Javascript
读jQuery之十二 删除事件核心方法
Jul 31 #Javascript
读jQuery之十一 添加事件核心方法
Jul 31 #Javascript
仅Firefox中链接A无法实现模拟点击以触发其默认行为
Jul 31 #Javascript
You might like
重置版宣传动画
2020/04/09 魔兽争霸
通过ICQ网关发送手机短信的PHP源程序
2006/10/09 PHP
php将数据库中的电话号码读取出来并生成图片
2008/08/31 PHP
尽可能写&quot;友好&quot;的&quot;Javascript&quot;代码
2007/01/09 Javascript
老鱼 浅谈javascript面向对象编程
2010/03/04 Javascript
jQuery中:selected选择器用法实例
2015/01/04 Javascript
jQuery选择器源码解读(八):addCombinator函数
2015/03/31 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
理解JS事件循环
2016/01/07 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
第一次动手实现bootstrap table分页效果
2016/09/22 Javascript
Jquery Easyui搜索框组件SearchBox使用详解(19)
2016/12/17 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
在vue中v-bind使用三目运算符绑定class的实例
2018/09/29 Javascript
jquery实现直播弹幕效果
2019/11/28 jQuery
vue实现div单选多选功能
2020/07/16 Javascript
VUE异步更新DOM - 用$nextTick解决DOM视图的问题
2020/11/06 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
举例讲解Python中is和id的用法
2015/04/03 Python
浅谈Python中copy()方法的使用
2015/05/21 Python
Python+微信接口实现运维报警
2016/08/27 Python
详解Python中for循环是如何工作的
2017/06/30 Python
Python元组及文件核心对象类型详解
2018/02/11 Python
Python列表解析配合if else的方法
2018/06/23 Python
使用python turtle画高达
2020/01/19 Python
Django执行源生mysql语句实现过程解析
2020/11/12 Python
python3中for循环踩过的坑记录
2020/12/14 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
HTML table 表格边框的实现思路
2019/10/12 HTML / CSS
全球最大的游戏市场:G2A
2018/07/05 全球购物
研究生自荐信
2013/10/09 职场文书
物流专业大学应届生求职信
2013/11/03 职场文书
挂职自我鉴定
2014/02/26 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
开会通知短信大全
2015/04/20 职场文书