Volání více oken OnLoad funkce v JavaScriptu
Tady je další malý peice z podvodu JavaScriptu, které jsem musel kopat kolem, protože situace commaned to. V jednom z mých webových stránek, měl jsem tuto situaci, kdy jsem musel provádět "windows.onload" dvakrát. První věc, která by přišla do paměti, nezkušený jako já (Musím upřímně říci, že od té doby jsem se pomocí Javascriptu rámců a knihovny, jsem forgotton dělat jednoduché věci na vlastní pěst ... smutné, ale pravda), je tato metoda ...
window.onload = onloadfn1; window.onload = onloadfn2, window.onload = onloadfn3; atd. ..
Omlouváme se, ale na, zvyklý tuto práci ... nechci diskutovat o provedení vědu Javascript moc ... ale podle mé nedávné zkušenosti, (onloadfn3) pouze poslední funkce špatně vlastně vykonán.
V normálních situacích, na rozdíl od dolu (což budu mluvit o něco později) ... můžete udělat jednu z následujících možností k provedení zahrnuje více onload funkce ....
Nebo něco takového
Funkce doOnLoad () { onloadfn1 (); onloadfn2 (); onloadfn3 (); } window.onload = doOnLoad,
Pro mé současné situaci, nemohu použít některý z výše uvedených ...
Proč musím zavolat windows.onload dvakrát, spíše to, že volání dvě funkce v jednom onload funkce? Zde je rychlý pohled na můj problém prohlášení ...
"Moje stránek stránky jsou strukturovány jako WordPress Téma .... tedy existuje společný Header.php a Footer.php, který se zařazené do všech stránek stránkách. K dispozici je funkce onload implementaion v Footer.php dělat některé běžné onload funkce. A existuje několik stránek, které je potřeba něco vlastního OnLoad, na rozdíl od těch, které provádí společné onload funkce. Kdybych přiřadit funkci zpětného volání přímo na window.onload psovoda, bude to přes-jet dříve přidělené zpětná volání v Footer.php "
.... Je to můj problém chápat
?
No! existuje několik řešení, která jsem najít. Všichni jsou si velmi podobné a hlavně implementions roztoku dané Simon Willison odst. http://simonwillison.net/2004/May/26/addLoadEvent/ ) ...
Řešení:
Stačí přidat tento kód javascript na stránky ...
Funkce addLoadEvent (func) { var oldonload = window.onload; if (typeof window.onload! = "funkce") { window.onload = funkce Else {} window.onload = function () { if (oldonload) { oldonload () } funkce () } } }A volat to místo obvyklého "windows.onload"
addLoadEvent (FunctionToRunOnPageLoad); addLoadEvent (function () { / * Více spuštění kódu na * načtení stránky });
Výhody tohoto fragmentu kódu ...
1. V první řadě, to vám umožní mít více windows.onload události, volal z oddělených částí kódu, aniž by overridding předchozí definici
2. Je to opravdu decentní. To může být umístěna v souboru s vašimi ostatními skripty nebo v samostatném souboru.
3. Funguje to iv případě, že window.onload již nastaven.










































