我想执行一段只在文档已被加载(不是在加载后执行RIGHT的情况下才运行)的代码段。 寻找不是JQuery的东西。只在窗口加载时执行动作
问题背后的前提是:我有一个在页面完全加载之前运行的函数。但是,该函数会调用另一个调度事件的函数。如果窗口已经加载,我只想要分派事件。如果没有,也许只是将它存储在一个数组中,并在页面加载后发送它
我想执行一段只在文档已被加载(不是在加载后执行RIGHT的情况下才运行)的代码段。 寻找不是JQuery的东西。只在窗口加载时执行动作
问题背后的前提是:我有一个在页面完全加载之前运行的函数。但是,该函数会调用另一个调度事件的函数。如果窗口已经加载,我只想要分派事件。如果没有,也许只是将它存储在一个数组中,并在页面加载后发送它
您的问题的细微差别似乎是,您没有困难捕获onload
事件,而只是知道它是否发生了。
我会做jQuery的工作,并在onload
事件中设置一个标志为true
,然后在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
});
问题背后的前提: 我有一个在页面完全加载之前运行的函数。但是,该函数会调用另一个调度事件的函数。如果窗口已经加载,我只想要分派事件。如果没有,也许只是将其存储在一个数组中,并在页面加载后调度它。 –
@HassaanHafeez我已经更新了我的答案,以使它更加多用于IIFE,但基本上只需要将该语句放在'onload'块中或者是,否则将其放入稍后调用的数组中。 – 4castle
https://stackoverflow.com/questions/799981/document-ready-equivalent-without-jquery – Jack
是:
对于重用的解决方案,你可以在接受回调函数封装这一行为你试图检测一个事件,或者只是有一些代码来放入一个'if'语句? – 4castle
基本上放在'if'语句中。我尝试过DOMContentLoaded和onload,但它们不适用于我正在做的事情。我想要检查dom是否已加载,不要在加载后立即运行某些东西......如果这很有意义 –