Autor | Zpráva | ||
---|---|---|---|
Nikd0 Profil * |
#1 · Zasláno: 17. 10. 2010, 11:44:17
Ahoj,
mám script aby se obrázek načetl ještě před zobrazení a vždycky se objevuje alert Stack overflow at line: 0. Nevím co stím. <img onload="nacitani(this, '<?php echo($orbázek); ?>');" ...> function nacitani(obr, url) { obrazek = new Image(); obrazek.onload = function () {obr.src=url;}; obrazek.src = url; } |
||
nevim Profil * |
#2 · Zasláno: 17. 10. 2010, 13:26:11
Co to má být?
1. Onload atribut se používá jen u elementu body co já vím. 2. Proměnná s diakritikou není úplně nejlepší nápad 3. Podle toho co máš tady pleteš php a javascript dohromady! 4. atd... |
||
Joker Profil |
#3 · Zasláno: 17. 10. 2010, 13:38:03
Nikd0:
1. Pokud se části Javascriptu generují přes PHP a problém je v Javascriptu, bylo by lepší vložit kompletní skript vygenerovaný z PHP. Jinak viz nevim: „1. Onload atribut se používá jen u elementu body co já vím.“ (pro úplnost, ještě může být u frameset) „2. Proměnná s diakritikou není úplně nejlepší nápad“ - a ještě navíc s překlepem „3. Podle toho co máš tady pleteš php a javascript dohromady!“ - no tohle nemusí být pravda, ale viz výše, lepší bude kód s už zpracovaným PHP. |
||
Radek9 Profil |
#4 · Zasláno: 17. 10. 2010, 13:39:25 · Upravil/a: Radek9
nevim:
Všechno blbě. ;-) 1. U body a img (Edit: A vlastně i u framesetu, jak psal Joker) 2. V PHP to není problém 3. To taky není problém, pokud ti to nevyhodí např. apostrof nebo uvozovku |
||
Joker Profil |
#5 · Zasláno: 17. 10. 2010, 14:01:26
Radek9:
„V PHP to není problém“ Přesto bych nepojmenovával proměnné s diakritikou. I když v tomhle případě bude spíš zajímavé co je uvnitř té proměnné. |
||
Nikd0 Profil * |
#6 · Zasláno: 17. 10. 2010, 14:13:40
K té proměnné, to sem blbě napsal sem, ve stránce to je $obrazek. A script funguje až na tu hlášku.
Dělám fotogalerii a tady se budou načítat náhledy všech fotek, takže sem to měl napřed že se ten script vloží ke každým řádku a údaje se doplní přímo do scriptu přes php,a le i tak to psalo tu hlášku, takže je jedno jestli má každej obrázek tu funkci přímo pro sebe nebo je takhle. <img onload="nacitani(this, 'fotky/37_nahled.jpg');" src="img/notloaded-icon.jpg"> <script> function nacitani(obr, url) { obrazek = new Image(); obrazek.onload = function () {obr.src=url;}; obrazek.src = url; } </script> |
||
Tori Profil |
#7 · Zasláno: 17. 10. 2010, 14:16:12
Nikd0:
Jen bych se chtěla zeptat: co se pak stane s tím novým obrázkem (proměnná obrazek), když ho vytvoříte - zůstane v paměti? A nezacyklí se to tou anonymní funkcí? Možná jsem to špatně pochopila, ale připadá mi, že to funguje takto: - načte se obrázek1, zavolá nacitani() - vytvoří se (v paměti?) nový obrázek2, ale nic se s ním dál neděje. Zároveň se původní obrázek1 dá znovu načíst - tím se znovu spustí nacitani(), v paměti se vytvoří obrázek2b, znova se načte obrázek1 .... a tak dokola. |
||
Nikd0 Profil * |
#8 · Zasláno: 17. 10. 2010, 14:22:48
Na tom něco je,.... A ještě jak to vyřešit :D
|
||
Davex Profil |
#9 · Zasláno: 17. 10. 2010, 14:24:13
V celém kódu vidím jeden velký problém - pokud bude mít někdo vypnutý JavaScript, tak se mu nic nezobrazí.
Krom toho to vypadá, že tento kód skončí nekonečnou rekurzí a nedivím se tomu, že prohlížeč protestuje. Tato úprava by mohla pomoci: function nacitani(obr, url) { var obrazek = new Image(); obrazek.onload = function () {obr.onload=null; obr.src=url;}; obrazek.src = url; } |
||
Nikd0 Profil * |
#10 · Zasláno: 17. 10. 2010, 14:30:02
Jo, funguje to. Díky moc :D
|
||
Tori Profil |
#11 · Zasláno: 17. 10. 2010, 14:47:15
Davex:
Co se stane s tím obrázkem v proměnné obrazek? Omlouvám se za začátečnický dotaz, ale pořád nějak nerozumím, nač ho je vlastně třeba. |
||
Davex Profil |
#12 · Zasláno: 17. 10. 2010, 14:55:27
Tori:
V mém kódu se obrazek po skončení funkce zahodí (protože je to lokální proměnná), ale obrázek zůstane v keši prohlížeče o což asi šlo - načíst celý obrázek do keše a v cukuletu zobrazit. |
||
Časová prodleva: 14 let
|
0