zoukankan      html  css  js  c++  java
  • IE6/IE7下onresize执行多次解决方法

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

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

     

    /**
     * IE下 window.onresize 有bug 可以使用debounce封装监听函数 
     * see http://blog.csdn.net/fudesign2008/article/details/7035537
     * @author FuDesign2008@163.com
     * @date   2011-11-30
     * @time   下午04:02:55
     */
    
    /**
     *
     * @param {Function} callback 回调函数
     * @param {Integer} delay   延迟时间,单位为毫秒(ms),默认150
     * @param {Object} context  上下文,即this关键字指向的对象,默认为null
     * @return {Function}
     */
    function debounce(callback, delay, context){
        if (typeof(callback) !== "function") {
            return;
        }
        delay = delay || 150;
        context = context || null;
        var timeout;
        var runIt = function(){
                callback.apply(context);
            };
        return (function(){
            window.clearTimeout(timeout);
            timeout = window.setTimeout(runIt, delay);
        });
    }
    var winResizeHandler = function(event){
    	  console.log("window resized");
    };
    
    window.onresize= debounce(winResizeHandler, 300);
    
  • 相关阅读:
    webpack-dev-server的使用及说明
    Web框架
    HTTP协议
    jQuery的使用
    发红包
    python操作mysql
    mysql索引与补充
    JavaScript之BOM操作
    JavaScript之DOM操作
    JavaScript之基础语法
  • 原文地址:https://www.cnblogs.com/zmc/p/3133335.html
Copyright © 2011-2022 走看看