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 相关文章推荐
dojo学习第二天 ajax异步请求之绑定列表
Aug 29 Javascript
JavaScript回调(callback)函数概念自我理解及示例
Jul 04 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
浅析webapp框架AngularUI的demo
Dec 21 Javascript
javascript实现可全选、反选及删除表格的方法
May 15 Javascript
Javascript技术栈中的四种依赖注入详解
Feb 23 Javascript
mvvm双向绑定机制的原理和实现代码(推荐)
Jun 07 Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 Javascript
AngularJS应用开发思维之依赖注入3
Aug 19 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 Javascript
Vee-validate 父组件获取子组件表单校验结果的实例代码
May 20 Javascript
vue data变量相互赋值后被实时同步的解决步骤
Aug 05 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大文件切割上传并带进度条功能示例
2019/07/01 PHP
浅谈laravel数据库查询返回的数据形式
2019/10/21 PHP
TNC vs BOOM BO3 第三场2.13
2021/03/10 DOTA
javascript 跳转代码集合
2009/12/03 Javascript
javascript 语法基础 想学习js的朋友可以看看
2009/12/16 Javascript
jQuery EasyUI API 中文文档 - Parser 解析器
2011/09/29 Javascript
如何让DIV可编辑、可拖动示例代码
2013/09/18 Javascript
jQuery学习之prop和attr的区别示例介绍
2013/11/15 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
jQuery删除一个元素后淡出效果展示删除过程的方法
2015/03/18 Javascript
jQuery插件expander实现图片翻转特效
2015/05/21 Javascript
开发Vue树形组件的示例代码
2017/12/21 Javascript
浅谈React Event实现原理
2018/09/20 Javascript
nodejs检测因特网是否断开的解决方案
2019/04/17 NodeJs
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
python字符串对其居中显示的方法
2015/07/11 Python
Python实现将Excel转换为json的方法示例
2017/08/05 Python
python读取excel表格生成erlang数据
2017/08/26 Python
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
Python决策树分类算法学习
2017/12/22 Python
python smtplib模块自动收发邮件功能(二)
2018/05/22 Python
python 实现返回一个列表中出现次数最多的元素方法
2019/06/11 Python
python集合是否可变总结
2019/06/20 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
Python如何实现邮件功能
2020/05/27 Python
如何利用Python识别图片中的文字
2020/05/31 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
python查询MySQL将数据写入Excel
2020/10/29 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
linux面试题参考答案(8)
2016/04/19 面试题
个人四风问题对照检查材料
2014/09/26 职场文书
学校安全管理制度
2015/08/06 职场文书
sql查询语句之平均分、最高最低分及排序语句
2022/05/30 MySQL
Nginx报错104:Connection reset by peer问题的解决及分析
2022/07/23 Servers