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 相关文章推荐
JQuery 动态扩展对象之另类视角
May 25 Javascript
jquery $.each 和for怎么跳出循环终止本次循环
Sep 27 Javascript
jQuery中eq()方法用法实例
Jan 05 Javascript
javascript为按钮注册回车事件(设置默认按钮)的方法
May 09 Javascript
JavaScript获取两个数组交集的方法
Jun 09 Javascript
Ubuntu系统下Angularjs开发环境安装
Sep 01 Javascript
JavaScript中Math对象的方法介绍
Jan 05 Javascript
JS实现键值对遍历json数组功能示例
May 30 Javascript
Vue2.0 实现移动端图片上传功能
May 30 Javascript
微信小程序mpvue点击按钮获取button值的方法
May 29 Javascript
详解React 条件渲染
Jul 08 Javascript
Vue封装Axios请求和拦截器的步骤
Sep 16 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
smarty自定义函数htmlcheckboxes用法实例
2015/01/22 PHP
学习php设计模式 php实现状态模式
2015/12/07 PHP
一个非常实用的php文件上传类
2017/07/04 PHP
JQUERY的属性选择符和自定义选择符使用方法(二)
2011/04/07 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
2012/02/10 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
2013/07/04 Javascript
JavaScript DOM节点添加示例
2014/07/16 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
jQuery中;function($,undefined) 前面的分号的用处
2014/12/17 Javascript
jQuery通过扩展实现抖动效果的方法
2015/03/11 Javascript
jquery插件hiAlert实现网页对话框美化
2015/05/03 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
easyui简介_动力节点Java学院整理
2017/07/14 Javascript
Three.js利用dat.GUI如何简化试验流程详解
2017/09/26 Javascript
pygame播放音乐的方法
2015/05/19 Python
一键搞定python连接mysql驱动有关问题(windows版本)
2016/04/23 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
Python 通过截图匹配原图中的位置(opencv)实例
2019/08/27 Python
Python字符串格式化常用手段及注意事项
2020/06/17 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
Html5页面上如何禁止手机虚拟键盘弹出
2020/03/19 HTML / CSS
英国领先的隐形眼镜在线供应商:Lenstore.co.uk
2019/11/24 全球购物
请写出 BOOL flag 与"零值"比较的 if 语句
2016/02/29 面试题
Linux管理员面试题 Linux admin interview questions
2016/07/08 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
js正则匹配markdown里的图片标签的实现
2021/03/24 Javascript
合同专员岗位职责
2013/12/18 职场文书
村干部承诺书
2014/03/28 职场文书
《蝙蝠和雷达》教学反思
2014/04/23 职场文书
保证书格式范文
2014/04/28 职场文书
企业环保标语
2014/06/10 职场文书
大学毕业典礼演讲稿
2014/09/09 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
任长霞观后感
2015/06/16 职场文书