Autor Zpráva
Kajman_
Profil *
Je nějak možné definovat window.onload i když je už přímo v html nastaven atribut onload u body?
_es
Profil
Myslíš definovať tak, aby fungovali oba kódy, alebo pôvodný v <body> zrušiť a nahradiť ho iným?
Možné to je, no treba to upresniť.
Definovanie v atribúte onload v značke <body> zodpovedá priradeniu funkcie do vlastnosti window.onload.
Kajman_
Profil *
Chtěl bych navíc, ale při testech se mi zdálo, že se vždy vykoná funkce v <body onload> a window.onload nic neudělá. Bude to tedy tím, že mám javascript v <head>, tam je window.onload zatím nenastavená a když do ní dám cokoliv, stejně to onload v body přeplácne.

Některé frameworky tuším mají vlastí řízení událostí, tam by to asi šlo zachovat a přidat si něco svého, ale natahovat kvůli tomu nějakého obra se mi moc nechce.
_es
Profil
Kajman:
atribút onload v <body> a window.onload ukazujú na to isté.
Ak umiestníš skript s pridaním funkcie do window.onload až za značku <body>, tak sa prepíše pôvodný kód.
Ak ho chceš ponechať, môžeš v skripte až za <body> dať kód:
this.onload = function() {
  onload(); // spustenie pôvodného onloadu
  nejaký ďalší kód
}
Prípadne zmeníš poradie príkazov.
Druhá možnosť je pridanie ovládača cez window.attachEvent v IE a cez window.addEventListener v ostatných prehliadačoch. No tam zase nie je zaručené a nastaviteľné poradie spustenia jednotlivých kódov.
Chamurappi
Profil
Reaguji na _es:
onload(); // spustenie pôvodného onloadu
To musí skončit nekonečnou rekurzí, ne? Bez pomocné proměnné (do které si schovám referenci na původní onload) bych to neriskoval.
_es
Profil
Chamurappi:
To musí skončit nekonečnou rekurzí, ne?
Aha, na to som nepomyslel, tak potom:
var staryOnload = onload;
this.onload = function() {
  staryOnload(); // spustenie pôvodného onloadu
  nejaký ďalší kód
}
Kajman_
Profil *
A se zachováním umístění js jen před <body> to asi nepůjde, že? Možná nějakým pozdržením díky set interval, ale to asi není zrovna čisté.
_es
Profil
Kajman:
A se zachováním umístění js jen před <body> to asi nepůjde, že?
To pôjde tou "druhou možnosťou" ak ti nezáleží na poradí spustenia kódov:
function funkcia(){nejaký kód}
try{addEventListener("load", funkcia, false);}catch(e){attachEvent("onload", funkcia);}
Kajman_
Profil *
_es:
Díky.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0