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 相关文章推荐
浏览器解析js生成的html出现样式问题的解决方法
Apr 16 Javascript
jquery自动填充勾选框即把勾选框打上true
Mar 24 Javascript
常用的几段javascript代码分享
Mar 25 Javascript
浅谈JavaScript的Polymer框架中的behaviors对象
Jul 29 Javascript
JS+CSS简单树形菜单实现方法
Sep 12 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
Jun 21 Javascript
在 Angular2 中实现自定义校验指令(确认密码)的方法
Jan 23 Javascript
详解探索 vuex 2.0 以及使用 vuejs 2.0 + vuex 2.0 构建记事本应用
Jun 16 Javascript
vue 粒子特效的示例代码
Sep 19 Javascript
jquery实现的简单轮播图功能【适合新手】
Aug 17 jQuery
Vue的watch和computed方法的使用及区别介绍
Sep 06 Javascript
JS基于Location实现访问Url、重定向及刷新页面的方法分析
Dec 03 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
php SQL防注入代码集合
2008/04/25 PHP
PHP中strnatcmp()函数“自然排序算法”进行字符串比较用法分析(对比strcmp函数)
2016/01/07 PHP
php语言注释,单行注释和多行注释
2018/01/21 PHP
对联广告js flash激活
2006/10/19 Javascript
asp(javascript)全角半角转换代码 dbc2sbc
2009/08/06 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
javascript中Array数组的迭代方法实例分析
2015/02/04 Javascript
js/jquery判断浏览器类型的方法小结
2015/05/12 Javascript
JavaScript数组各种常见用法实例分析
2015/08/04 Javascript
JavaScript的Number对象的toString()方法
2015/12/18 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
Node.js 利用cheerio制作简单的网页爬虫示例
2018/03/01 Javascript
JavaScript实现计算圆周率到小数点后100位的方法示例
2018/05/08 Javascript
vue框架搭建之axios使用教程
2018/07/11 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
angular *Ngif else用法详解
2020/12/15 Javascript
python计算圆周长、面积、球体体积并画出圆
2014/04/08 Python
python分析nignx访问日志脚本分享
2015/02/26 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
Python3实现的简单三级菜单功能示例
2019/03/12 Python
Python常用特殊方法实例总结
2019/03/22 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
在tensorflow中实现屏蔽输出的log信息
2020/02/04 Python
Python3 利用face_recognition实现人脸识别的方法
2020/03/13 Python
基于python代码批量处理图片resize
2020/06/04 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
2020/08/07 Python
HTML5中canvas中的beginPath()和closePath()的重要性
2018/08/24 HTML / CSS
党员先进事迹材料
2014/12/19 职场文书
农村婚礼司仪主持词
2015/06/29 职场文书
新闻通讯稿模板
2015/07/22 职场文书
高一军训感想
2015/08/07 职场文书
解决jupyter notebook启动后没有token的坑
2021/04/24 Python
Django 实现jwt认证的示例
2021/04/30 Python
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
nginx配置指令之server_name的具体使用
2022/08/14 Servers