【问题标题】:ResizeStop without namespace pollution无命名空间污染的 ResizeStop
【发布时间】:2011-01-27 02:37:48
【问题描述】:

我正在尝试检测浏览器何时停止调整大小。以下工作,但取决于全局变量。有没有办法使用闭包来避免这种情况?如果有,怎么做?

    var rtime = new Date(1, 1, 2000, 12,00,00);
    var timeout = false;
    var delta = 200;

    $(document).ready(function() {          

        $(window).resize(function() {
            rtime = new Date();
            if (timeout === false) {
                timeout = true;
                setTimeout(resizeend, delta);
            }
        });

    });

    function resizeend() {
        if (new Date() - rtime < delta) {
            setTimeout(resizeend, delta);
        } else {
            timeout = false;
            $("#log").append("<span>resizeend</span> ");
        }               
    }

** 脚本来源:http://vidasp.net/resizeend.html

【问题讨论】:

    标签: javascript jquery resize closures


    【解决方案1】:
    (function(){ 
    var rtime = new Date(1, 1, 2000, 12,00,00);
    var timeout = false;
    var delta = 200;
    
    $(document).ready(function() {          
    
        $(window).resize(function() {
            rtime = new Date();
            if (timeout === false) {
                timeout = true;
                setTimeout(resizeend, delta);
            }
        });
    
    });
    
    function resizeend() {
        if (new Date() - rtime < delta) {
            setTimeout(resizeend, delta);
        } else {
            timeout = false;
            $("#log").append("<span>resizeend</span> ");
        }               
    }
    })();
    

    是一个闭包

    【讨论】:

    • setTimeout 触发时不会导致 resizeend 未定义吗?
    • 否,因为它是这个自调用 annon 函数的私有变量
    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 2011-06-16
    • 1970-01-01
    • 2014-04-25
    • 2015-03-05
    • 1970-01-01
    • 2011-05-14
    • 1970-01-01
    相关资源
    最近更新 更多