首页
Javascript
Html
Css
Node.js
Electron
移动开发
工具类
服务端
浏览器相关
前端收藏
其他
关于

IE6,IE7下onresize事件被执行多次的问题之解决方法

2012年11月05日 发布 阅读(442) 作者:懒炖

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

《window.onresize hangs IE6 and IE7》

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

  1. /**
  2. *
  3. * @param {Function} callback 回调函数
  4. * @param {Integer} delay 延迟时间,单位为毫秒(ms),默认150
  5. * @param {Object} context 上下文,即this关键字指向的对象,默认为null
  6. * @return {Function}
  7. */
  8. function debounce(callback, delay, context){
  9. if (typeof(callback) !== "function") {
  10. return;
  11. }
  12. delay = delay || 150;
  13. context = context || null;
  14. var timeout;
  15. var runIt = function(){
  16. callback.apply(context);
  17. };
  18. return (function(){
  19. window.clearTimeout(timeout);
  20. timeout = window.setTimeout(runIt, delay);
  21. });
  22. }
  23. var winResizeHandler = function(event){
  24. alert("window resized");
  25. };
  26. window.onresize= debounce(winResizeHandler, 300);
版权声明:本站文章除特别声明外,均采用署名-非商业性使用-禁止演绎 4.0 国际 许可协议,如需转载,请注明出处

评论

  •