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 10 Javascript
Ajax搜索结果页面下方的分页按钮的生成
Apr 05 Javascript
火狐textarea输入法的bug的触发及解决
Jul 24 Javascript
javascript转换日期字符串为Date日期对象的方法
Feb 13 Javascript
浅谈Jquery为元素绑定事件
Apr 27 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
May 20 Javascript
jQuery动态生成Bootstrap表格
Nov 01 Javascript
vue.js学习之UI组件开发教程
Jul 03 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
Apr 23 Javascript
jQuery实现弹出层效果
Dec 10 jQuery
vue-cli或vue项目利用HBuilder打包成移动端app操作
Jul 29 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编写PDF文档生成器
2006/10/09 PHP
php正则校验用户名介绍
2008/07/19 PHP
php中文验证码实现示例分享
2014/01/12 PHP
php简单实现无限分类树形列表的方法
2015/03/27 PHP
php打造智能化的柱状图程序,用于报表等
2015/06/19 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
一个用javascript写的select支持上下键、首字母筛选以及回车取值的功能
2009/09/09 Javascript
jQuery创建平滑的页面滚动(顶部或底部)
2013/02/26 Javascript
js监听鼠标事件控制textarea输入字符串的个数
2014/09/29 Javascript
jQuery实现简单的DIV拖动效果
2016/02/19 Javascript
jQuery自定义组件(导入组件)
2016/11/08 Javascript
js编写三级联动简单案例
2016/12/21 Javascript
原生js jquery ajax请求以及jsonp的调用方法
2017/08/04 jQuery
angular的输入和输出的使用方法
2018/09/22 Javascript
解决layer.confirm快速点击会重复触发事件的问题
2019/09/23 Javascript
深入了解Vue3模板编译原理
2020/11/19 Vue.js
python查询mysql中文乱码问题
2014/11/09 Python
快速入手Python字符编码
2016/08/03 Python
python去除拼音声调字母,替换为字母的方法
2018/11/28 Python
Python Unittest根据不同测试环境跳过用例的方法
2018/12/16 Python
python3字符串操作总结
2019/07/24 Python
Django配置文件代码说明
2019/12/04 Python
python实现图片转换成素描和漫画格式
2020/08/19 Python
css3 box-sizing属性使用参考指南
2013/01/08 HTML / CSS
html5使用canvas实现跟随光标跳动的火焰效果
2014/01/07 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
华为慧通面试题
2012/09/11 面试题
strstr()的简单实现
2013/09/26 面试题
What's the difference between Debug and Trace class? (Debug类与Trace类有什么区别)
2013/09/10 面试题
StringBuilder和String的区别
2015/05/18 面试题
高二物理教学反思
2014/02/08 职场文书
国际贸易毕业生求职信
2014/07/20 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
党在我心中演讲稿
2014/09/02 职场文书
2015年车间主任工作总结
2015/05/21 职场文书