解决 IE6 IE7 onresize的bug

简介: <p style="color:rgb(51,51,51); font-family:Arial; font-size:14px; line-height:26px"> IE下给window对象定义其onresize事件,在拉伸缩小窗口时,其onresize方法将被执行多次,并且其具体执行的次数在不同的电脑有不同的值,相当诡异,Firefox等其他浏览器则无此现象。具体可参看这一篇文章<

IE下给window对象定义其onresize事件,在拉伸缩小窗口时,其onresize方法将被执行多次,并且其具体执行的次数在不同的电脑有不同的值,相当诡异,Firefox等其他浏览器则无此现象。具体可参看这一篇文章《window.onresize hangs IE6 and IE7》

高阶函数debounce 正是为此而生的


 

[javascript]  view plain copy
  1. /** 
  2.  * IE下 window.onresize 有bug 可以使用debounce封装监听函数  
  3.  * see http://blog.csdn.net/fudesign2008/article/details/7035537 
  4.  * @author FuDesign2008@163.com 
  5.  * @date   2011-11-30 
  6.  * @time   下午04:02:55 
  7.  */  
  8.   
  9. /** 
  10.  * 
  11.  * @param {Function} callback 回调函数 
  12.  * @param {Integer} delay   延迟时间,单位为毫秒(ms),默认150 
  13.  * @param {Object} context  上下文,即this关键字指向的对象,默认为null 
  14.  * @return {Function} 
  15.  */  
  16. function debounce(callback, delay, context){  
  17.     if (typeof(callback) !== "function") {  
  18.         return;  
  19.     }  
  20.     delay = delay || 150;  
  21.     context = context || null;  
  22.     var timeout;  
  23.     var runIt = function(){  
  24.             callback.apply(context);  
  25.         };  
  26.     return (function(){  
  27.         window.clearTimeout(timeout);  
  28.         timeout = window.setTimeout(runIt, delay);  
  29.     });  
  30. }  
  31. var winResizeHandler = function(event){  
  32.       console.log("window resized");  
  33. };  
  34.   
  35. window.onresize= debounce(winResizeHandler, 300);  

非常不错的解决方案
相关文章
|
Web App开发 前端开发
区分IE6,IE7,IE8,IE9,FireFox,Chrome浏览器的CSS hack
区分IE6,IE7,IE8,IE9,FireFox,Chrome浏览器的CSS hack
|
Windows
IE 浏览器用户注意!升级到 Win 11 可能出现数据丢失 Bug
IE 浏览器用户注意!升级到 Win 11 可能出现数据丢失 Bug
112 0
IE 浏览器用户注意!升级到 Win 11 可能出现数据丢失 Bug
IE里面的一些BUG记录
网上已经有很多类似的记录了,这里写这个是给自己在项目中碰到的问题做个简单的记录,以后将持续更新 1.IE67 border-bottom失效 一个a标签,想要使用移上去后会在下面显示一个横条,我用border-bottom做了一个效果,IE6 7必须加了line-height后才能显示,应该是因为没有高度的原因
IE里面的一些BUG记录
|
JavaScript
我修复的印象最深的一个bug:vue在ie下的兼容性
很多兼容性问题都是因为浏览器对标签的默认属性解析不同造成的,只要我们稍加设置都能轻松地解决这些兼容问题。
240 0
我修复的印象最深的一个bug:vue在ie下的兼容性
|
Web App开发 移动开发 安全
汲取 IE6、IE8 消亡的经验,如何“杀死”IE11?
  我们大家熟悉的 IE 浏览器经过更新换代,目前已经更新到 IE11,而程序员多年唠叨的“IE 必须死”如今似乎要成为现实了。本文将回顾 IE6 和 IE8 消亡的历史,预测如何更好地“干掉” IE11。
181 0
|
Web App开发
IE6/IE7/IE8/IE9不支持exec的简写方式
IE6/IE7/IE8/IE9不支持exec的简写方式 如下 var ary = /h/('hello'); alert(ary); IE6/7/8/9中报错Venus'Blog Firefox/Safari/Chrome/Opera的最新版本均弹出了“h”   以上写法等价于 var ary = /h/.exec('hello'); 即 Firefox/Safari/Chrome/Opera浏览器中使用exec方法时可以去掉“exec”用 “正则直接量+()” 方式使用。
856 0
|
前端开发
CSS实现文字竖排显示(兼容IE6/IE7)
平时我们常使文字横排显示,那么如何用CSS实现文字竖排显示呢?
12498 0