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面向对象编程浅析
Aug 28 Javascript
一行代码实现纯数据json对象的深度克隆实现思路
Jan 09 Javascript
基于javascript实现判断移动终端浏览器版本信息
Dec 09 Javascript
jquery 插件实现瀑布流图片展示实例
Apr 03 Javascript
浅谈JavaScript 数据属性和访问器属性
Sep 01 Javascript
bootstrap fileinput 上传插件的基础使用
Feb 17 Javascript
基于Vue实现后台系统权限控制的示例代码
Aug 29 Javascript
前端防止用户重复提交js实现代码示例
Sep 07 Javascript
JavaScript装箱及拆箱boxing及unBoxing用法解析
Jun 15 Javascript
Vue解决echart在element的tab切换时显示不正确问题
Aug 03 Javascript
何时使用Map来代替普通的JS对象
Apr 29 Javascript
vue判断按钮是否可以点击
Apr 09 Vue.js
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 stream_context_create()作用和用法分析
2011/03/29 PHP
php对大文件进行读取操作的实现代码
2013/01/23 PHP
php实现的一个简单json rpc框架实例
2015/03/30 PHP
快速保存网页中所有图片的方法
2006/06/23 Javascript
JTrackBar水平拖动效果
2007/07/15 Javascript
jquery获取table中的某行全部td的内容方法
2013/03/08 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
浅析如何利用JavaScript进行语音识别
2016/10/27 Javascript
JavaScript正则获取地址栏中参数的方法
2017/03/02 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
Vue动态组件实例解析
2017/08/20 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
微信小程序分享功能onShareAppMessage(options)用法分析
2019/04/24 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
Python中title()方法的使用简介
2015/05/20 Python
Python 通过URL打开图片实例详解
2017/06/01 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
Python实现ping指定IP的示例
2018/06/04 Python
python样条插值的实现代码
2018/12/17 Python
Python设计模式之职责链模式原理与用法实例分析
2019/01/11 Python
python的set处理二维数组转一维数组的方法示例
2019/05/31 Python
Django 实现xadmin后台菜单改为中文
2019/11/15 Python
pymysql之cur.fetchall() 和cur.fetchone()用法详解
2020/05/15 Python
利用scikitlearn画ROC曲线实例
2020/07/02 Python
windows下python 3.9 Numpy scipy和matlabplot的安装教程详解
2020/11/28 Python
Rowdy Gentleman服装和配饰:美好时光
2019/09/24 全球购物
简单的辞职信范文
2014/01/18 职场文书
绘画专业自荐信范文
2014/02/23 职场文书
新法人代表任命书
2014/06/06 职场文书
房屋出售授权委托书
2014/10/12 职场文书
异地恋情人节寄语
2015/02/28 职场文书
国家助学贷款承诺书
2015/04/30 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书
八年级作文之友谊
2019/12/02 职场文书
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis