Miller同学发现的IE6 bug:如以下代码,点击textarea时,引发window的blur,导致focus与blur配对混乱:
<body> <textarea></textarea> hello< > window. =function(){ document. = 'blur:' + Math.random() ;}window. =function(){ document. = 'focus:' + Math.random() ;}</ > </body>
这应该是一个很常见的需求,例如,当前窗口定期更新数据,而窗口失焦则减少信息更新频率。IE6的bug导致的配对混乱却会打乱我们的计划。
上网查也没查出关于这个bug的官方说明也推荐解决方案,只好自己生更的实现一个解决方案。
代码如下:Venus'Blog
<body> <textarea></textarea> hello< > (function(){ var focusTimer = 0; function myBlur(){ document. = 'blur:' + Math.random() ; } function myFocus(){ clearTimeout(focusTimer); focusTimer = setTimeout(function(){ document. = 'focus:' + Math.random() ; },10); } window. = document.body. in = myFocus; window. = document.body. out = myBlur;}());</ > </body>
大略原理是:找到很多可能触发 与 的时机,所有的 都立即执行,而 则延时10毫秒懒惰执行。
结果是:虽说有时多执行了几次myFocus与myBlur,但能保证窗口状态的正确性。Venus'Blog
方法可能有点山寨,不过一时没想到更好的办法,这样也暂时能解个燃眉之急。
继续阅读与本文标签相同的文章
上一篇 :
PHP正则表达式获取指定IP的物理地址
-
用react全家桶+antDesign写了一个习惯管理项目
2026-06-02栏目: 教程
-
前端开发-领域驱动设计
2026-06-02栏目: 教程
-
完美解决setInterval在浏览器切换时加速的问题
2026-06-02栏目: 教程
-
别上当!大部分AI企业都是蹭人工智能热点的!
2026-06-02栏目: 教程
-
技术分享 | Koa框架源码分析
2026-06-02栏目: 教程
