Chcem spustiť časť kódu, ktorá sa spustí iba v prípade, že už bol dokument načítaný (nie niečo, čo po načítaní spustí PRAVÉ). Hľadáte niečo, čo nie je JQuery.
Základná otázka: Mám funkciu, ktorá sa spustí pred úplným načítaním stránky. Táto funkcia však volá ďalšiu funkciu, ktorá odošle udalosť. Chcem, aby sa táto udalosť odoslala, iba ak je okno už načítané. Ak nie, možno ho uložte do poľa a po načítaní stránky ho odošlite
odpovede:
1 pre odpoveď č. 1Zdá sa, že nuanciou vašej otázky je, že nemáte problémy so zachytením onload
udalosť, ale skôr len vedieť, či sa to ešte stalo.
Urobil by som, čo jQuery robí, a nastavil vlajku ako true
vnútri a onload
a potom v udalosti if
vyhlásenie, na ktoré môžete odkazovať.
V prípade opakovane použiteľného riešenia by ste toto správanie mohli zapuzdriť do funkcie, ktorá akceptuje spätné volania:
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
});