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 相关文章推荐
Ajax::prototype 源码解读
Jan 22 Javascript
懒就要懒到底——鼠标自动点击(含时间判断)
Feb 20 Javascript
JS 用6N±1法求素数 实例教程
Oct 20 Javascript
轻轻松松学JS调试(不下载任何工具)
Apr 14 Javascript
jquery实现标题字体变换的滑动门菜单效果
Sep 07 Javascript
bootstrap daterangepicker汉化以及扩展功能
Jun 15 Javascript
谈谈VUE种methods watch和compute的区别和联系
Aug 01 Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 Javascript
Angular 开发学习之Angular CLI的安装使用
Dec 31 Javascript
vue获取form表单的值示例
Oct 29 Javascript
JS监听组合按键思路及实现过程
Apr 17 Javascript
jQuery 移除事件的方法
Jun 20 jQuery
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连mysql和oracle数据库性能比较
2006/10/09 PHP
桌面中心(二)数据库写入
2006/10/09 PHP
PHP 中英文混合排版中处理字符串常用的函数
2007/04/12 PHP
php中用数组的方法设置cookies
2011/04/21 PHP
PHP数组及条件,循环语句学习
2012/11/11 PHP
PHP框架laravel的.env文件配置教程
2017/06/07 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
2017/07/26 PHP
关于Laravel参数验证的一些疑与惑
2019/11/19 PHP
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
JS实现霓虹灯文字效果的方法
2015/08/06 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
JavaScript事件用法浅析
2016/10/31 Javascript
详解JS中的立即执行函数
2017/02/24 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
Angular开发实践之服务端渲染
2018/03/29 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
Vue.js 图标选择组件实践详解
2018/12/03 Javascript
vue中使用v-for时为什么不能用index作为key
2020/04/04 Javascript
如何使用vue slot创建一个模态框的实例代码
2020/05/24 Javascript
自己使用总结Python程序代码片段
2015/06/02 Python
Python使用matplotlib实现的图像读取、切割裁剪功能示例
2018/04/28 Python
python traceback捕获并打印异常的方法
2018/08/31 Python
Python利用递归实现文件的复制方法
2018/10/27 Python
selenium+python自动化测试之页面元素定位
2019/01/23 Python
DRF跨域后端解决之django-cors-headers的使用
2019/01/27 Python
Python+appium框架原生代码实现App自动化测试详解
2020/03/06 Python
django实现模型字段动态choice的操作
2020/04/01 Python
pycharm远程连接服务器并配置python interpreter的方法
2020/12/23 Python
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
软件工程师岗位职责
2013/11/16 职场文书
教师实习自我鉴定
2013/12/18 职场文书
党员教师群众路线个人整改措施
2014/10/28 职场文书
党的群众路线教育实践活动个人对照检查材料(公安)
2014/11/05 职场文书
2015年仓管员工作总结
2015/04/21 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
Python Django搭建文件下载服务器的实现
2021/05/10 Python