Autor | Zpráva | ||
---|---|---|---|
Kajman_ Profil * |
#1 · Zasláno: 24. 11. 2010, 16:56:01
Je nějak možné definovat window.onload i když je už přímo v html nastaven atribut onload u body?
|
||
_es Profil |
#2 · Zasláno: 24. 11. 2010, 17:03:35
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 * |
#3 · Zasláno: 24. 11. 2010, 21:00:00
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 |
#4 · Zasláno: 24. 11. 2010, 21:22:59
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 } 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 |
#5 · Zasláno: 24. 11. 2010, 21:27:26
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 |
#6 · Zasláno: 24. 11. 2010, 21:33:22
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 * |
#7 · Zasláno: 24. 11. 2010, 21:37:21
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 |
#8 · Zasláno: 24. 11. 2010, 21:57:33
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 * |
#9 · Zasláno: 25. 11. 2010, 09:26:21
_es:
Díky. |
||
Časová prodleva: 14 let
|
0