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 相关文章推荐
ie和firefox不兼容的解决方法集合
Apr 28 Javascript
基于jquery的web页面日期格式化插件
Nov 15 Javascript
JS截取字符串常用方法详细整理
Oct 28 Javascript
jQuery实现左右切换焦点图
Apr 03 Javascript
直接拿来用的页面跳转进度条JS实现
Jan 06 Javascript
Vue.js绑定HTML class数组语法错误的原因分析
Oct 19 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
Dec 18 Javascript
JavaScript数组去重算法实例小结
May 07 Javascript
微信小程序获取音频时长与实时获取播放进度问题
Aug 28 Javascript
JavaScript算法学习之冒泡排序和选择排序
Nov 02 Javascript
Vue根据条件添加click事件的方式
Nov 09 Javascript
JS call()及apply()方法使用实例汇总
Jul 11 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/03/04 日漫
用session做客户验证时的注意事项
2006/10/09 PHP
真正的ZIP文件操作类(php)
2007/07/21 PHP
PHP 存储文本换行实现方法
2010/01/05 PHP
CI框架实现框架前后端分离的方法详解
2016/12/30 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP编程实现的TCP服务端和客户端功能示例
2018/04/13 PHP
Laravel框架下的Contracts契约详解
2020/03/17 PHP
不错的JS中变量相关的细节分析
2007/08/13 Javascript
解决JS浮点数运算出现Bug的方法
2013/03/12 Javascript
jquery插件开发之实现google+圈子选择功能
2014/03/10 Javascript
深入理解JavaScript系列(19):求值策略(Evaluation strategy)详解
2015/03/05 Javascript
Bootstrap基础学习
2015/06/16 Javascript
javascript实现可键盘控制的抽奖系统
2016/03/10 Javascript
全面解析JavaScript里的循环方法之forEach,for-in,for-of
2020/04/20 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
重学 JS:为啥 await 不能用在 forEach 中详解
2019/04/15 Javascript
Vue 使用beforeEach实现登录状态检查功能
2019/10/31 Javascript
在vue中封装方法以及多处引用该方法详解
2020/08/14 Javascript
Python深度优先算法生成迷宫
2018/01/22 Python
对python打乱数据集中X,y标签对的方法详解
2018/12/14 Python
python解析命令行参数的三种方法详解
2019/11/29 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
Ubuntu16.04安装python3.6.5步骤详解
2020/01/10 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
竞选班长演讲稿
2013/12/30 职场文书
18岁生日感言
2014/01/12 职场文书
高中班主任评语大全
2014/04/25 职场文书
学生党员一帮一活动总结
2014/07/08 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
个人党性锻炼总结
2015/03/05 职场文书
违规违纪检讨书范文
2015/05/06 职场文书
刑事附带民事代理词
2015/05/25 职场文书
护理专业毕业自我鉴定
2019/08/12 职场文书