Kód futtatása az összes oldalelem letöltődése előtt
Sokan szembesültek már azzal a problémával, hogy a
Nos, Dean Edwards ismerteti blogjában a megoldást, amit érdemes lépésenként feldolgozni. Először is a
Így a teljes JavaScript kód az online kipróbálható demóból magyarra fordítva a következőképpen fest:
■ window.onload
eseménykezelő segítségével lefuttatott kódjuk túl későn kapott lehetőséget a beavatkozása, és így valamilyen dinamikus elem csak akkor tudott elindulni az oldalon, amikor már minden letöltődött. Ha korábban lefutó kódot szeretnénk, és már a weblap objektum modelljének feldolgozása is elegendő számunkra, akkor Mozilla böngészőkben az DOMContentLoaded
esemény van segítségünkre, de mit tehetünk Internet Explorerben?Nos, Dean Edwards ismerteti blogjában a megoldást, amit érdemes lépésenként feldolgozni. Először is a
<script>
elemeken használható defer
tulajdonság támogatását használja ki, ami pont a DOM objektumok összeállítása utáni betöltésre és végrehajtásra készteti a böngészőt. Ennek működésre bírásához, és más böngészőktől való elrejtéséhez azonban kisebb trükkökhöz kell folyamodni, amelyekhez vagy a feltételes megjegyzéseket vagy a feltételes JavaScript kód végrehajtást tudjuk segítségül hívni. Végül a többi böngésző számára Dean nem készített elő megoldást, így azoknak a szokásos onload
eseménykezelő beállítást adjuk, amelynél azért figyelni kell, hogy a már kezelt böngészők esetén ne fusson le kétszer.Így a teljes JavaScript kód az online kipróbálható demóból magyarra fordítva a következőképpen fest:
- <script type="text/javascript">
- function init() {
- // Ha már meghívták, ne fusson le újra
- if (arguments.callee.done) return;
- // Most hívják először, jelezzük, hogy ez megtörtént
- arguments.callee.done = true;
- // Itt lenne az onload esemény kódja
- };
- // Ez csak Mozilla böngészőkben megy
- if (document.addEventListener) {
- document.addEventListener("DOMContentLoaded", init, null);
- }
- // Ezt csak az Internet explorer fogja feldolgozni,
- // figyeljük meg, hogy a megjegyzések meddig tartanak!
- /*@cc_on @*/
- /*@if (@_win32)
- document.write("<script defer src=ie_onload.js><"+"/script>");
- /*@end @*/
- // A többi böngészőnek (az újrahívás védelemmel kerüljük el,
- // hogy Mozilla és Internet Explorer esetén is még egyszer lefusson)
- window.onload = init;
- </script>
progressbar
Gyanítom, hogy nem, mert tudnia kéne mennyi byte töltődött be és mennyinek kell még betöltődnie. Mondjuk az még odagenerélható, hogy mennyi az összméret,aminek be kell töltődnie, de a mennyi van most és menniy van hátra az mérhető-e js-ből?
De megkérdeztem, mert eddig azt is gyanítani véltem, hogy az onload előtt nem nagyon lehet semmise :)
gányolni lehet