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来解决ajax读取页面乱码
Nov 28 Javascript
JQuery获取当前屏幕的高度宽度的实现代码
Jul 12 Javascript
使用AmplifyJS组件配合JavaScript进行编程的指南
Jul 28 Javascript
jQuery遍历json的方法(推荐)
Jun 12 Javascript
详解React-Todos入门例子
Nov 08 Javascript
Node.js连接postgreSQL并进行数据操作
Dec 18 Javascript
JQuery实现图片轮播效果
May 08 jQuery
Vue.js常用指令的使用小结
Jun 23 Javascript
使用Vue如何写一个双向数据绑定(面试常见)
Apr 20 Javascript
解决angularjs WdatePicker ng-model的问题
Sep 13 Javascript
深入浅析nuxt.js基于ssh的vue通用框架
May 21 Javascript
JavaScript 实现下雪特效的示例代码
Sep 09 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
一个简单的自动发送邮件系统(一)
2006/10/09 PHP
PHP脚本数据库功能详解(下)
2006/10/09 PHP
php preg_match_all结合str_replace替换内容中所有img
2008/10/11 PHP
php入门教程 精简版
2009/12/13 PHP
php生成xml简单实例代码
2009/12/16 PHP
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
php实现图片上传、剪切功能
2016/05/07 PHP
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
js创建元素(节点)示例
2014/01/02 Javascript
分享一个自己动手写的jQuery分页插件
2014/08/28 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
简介JavaScript中fixed()方法的使用
2015/06/08 Javascript
javascript中数组方法汇总
2015/07/07 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
轻量级jQuery插件slideBox实现带底栏轮播(焦点图)代码
2016/03/28 Javascript
使用Web Uploader实现多文件上传
2016/06/08 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
基于JS实现视频上传显示进度条
2020/05/12 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
使用Node.js和Socket.IO扩展Django的实时处理功能
2015/04/20 Python
使用Python保存网页上的图片或者保存页面为截图
2016/03/05 Python
python 读取txt中每行数据,并且保存到excel中的实例
2018/04/29 Python
值得收藏的10道python 面试题
2019/04/15 Python
使用python+whoosh实现全文检索
2019/12/09 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
python opencv实现直线检测并测出倾斜角度(附源码+注释)
2020/12/31 Python
台湾最大网路书店:博客来
2018/03/18 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
应届生程序员求职信
2013/11/05 职场文书
大学团日活动新闻稿
2014/09/10 职场文书
房屋财产继承协议书范本
2014/11/03 职场文书
学校会议通知范文
2015/04/15 职场文书
幼儿园小班教学反思
2016/03/03 职场文书