仅在加载窗口时执行操作

时间:2016-07-14 20:07:40

标签: javascript window

我想执行一段代码,只有在文档已经加载时才会运行(而不是在加载文档后执行RIGHT的代码)。 寻找不是JQuery的东西。

问题背后的前提:我有一个在页面完全加载之前运行的函数。但是,该函数调用另一个调度事件的函数。我只希望在窗口已经加载时调度该事件。如果没有,也许只是将它存储在一个数组中,并在页面加载后发送它

1 个答案:

答案 0 :(得分:1)

你的问题的细微差别似乎是你没有抓住onload事件,而只是知道它是否已经发生。

我会做jQuery所做的事情,并在true事件中设置一个标记为onload,然后在if语句中引用该标记。

对于可重用的解决方案,您可以将此行为封装在接受回调的函数中:

var whenLoaded = (function() {
    var isLoaded = false,
        callbacks = [];
    window.onload = function() {
        isLoaded = true;
        for (var i = 0; i < callbacks.length; i++)
            callbacks[i]();
    };
    return function whenLoaded(callback) {
        if (isLoaded) {
            callback();
        } else {
            callbacks.push(callback);
        }
    };
})();

...

whenLoaded(function() {
    // eat a cookie
});