Jak správně spustit javascript funkci po načtení stránky, aneb správné nastavení onload události

Způsobů jak vyvolat spuštění javascript funkce ihned po načtení stránky je několik, jeden z nich je nastavení události v tagu body, ale co když se má volat více funkcí? Nebo nevíte jestli už nebyla nějaká funkce této události nastavena, pak by bylo vhodné ji přidat do zásobníku, aby další funkce nenahradila ty předchozí.


Jedna z možností je nastavení přímo v tagu body, <body onload="load()">, nebo později kódem window.onload=load();, problém tohoto způsobu je, že se funkce nepřidávají do zásobníku, ale poslední nastavená nahradí ty dřívější.

Správně to musíme udělat takhle:

  1. if(window.addEventListener) {
  2. window.addEventListener("load",function() { alert("ahoj"); },false);
  3. }
  4. else if(window.attachEvent) {
  5. window.attachEvent("onload",function() { alert("ahoj"); });
  6. }
  7. else {
  8. window.onload=function() { alert("ahoj"); };
  9. }

Tento způsob je funkční ve Firefoxu i v Internet Exploreru. V případě, že by nebyli dostupné metody addEventListener (firefox), ani attachEvent (IE), pak bude funkce nastavena pomocí window.onload.

komentáře

RSS Komentáře k článku RSS Komentáře   Add to Google
19.12.2008 14:11 | Anonym (dominikus) | tralala

mam problem,nechcu sa mi nacitat chat-y,ani nic,a pise mi to,ze musim nastavit provadeni javascriptu nebo co

20.12.2008 20:57 | Administrátor | Re: tralala

zkus to rozvést, bohužel vůbec netuším o čem píšeš

21.03.2009 01:03 | Anonym (Jakub Vrána) | Další řešení

I varianta se samotným onload se dá napsat rozšiřitelně:

function register_onload(f) {
var oldOnload = window.onload;
window.onload = function () {
if (typeof oldOnload == ‚function‘) {
oldOnload();
}
f();
} }

V naprosté většině případů je navíc lepší konkrétně událost onload vůbec nepoužívat (protože se vyvolá hrozně pozdě, až po nahrání všech externích objektů) a místo ní prostě funkci zavolat na konci dokumentu před značkou /BODY.

21.03.2009 16:21 | Administrátor | Re: Další řešení

z vlastních zkušeností, bych volat javascript před značkou body nedoporučoval, např. v případě, že některé javascripty jsou právě závislé na tom co už je na stránce (javascript je pro mne jedna z nejvíce chybových technologií), moje zkušenost je že se na to nedá spolehnout, proto také přece vzniklo v mootools ondomready ne? tedy pokud mi jde o bezpečné provedení javascriptu tak nejlépe až když je vše na stránce, pokud někdo s javascriptem dělá často doufám, že mi to potvrdí

02.12.2009 20:37 | Anonym (arpad) | hudba a filmy

jak mam zapnout javascript na google chrome dekuju

Jméno
Název
Text
Lze používat Texy! syntax. Příklad syntaxe: "text odkazu":odkaz, **tučně**, *kurzíva*, `code`. PHP kód uzavírejte do <?php ... ?> a JavaScript do <script> ... </script>