Autor | Zpráva | ||
---|---|---|---|
yFang Profil |
#1 · Zasláno: 9. 10. 2008, 12:57:34
Na této stránce jsem se dočetl, že pomocí objektu Image lze zjistit:
(...)tyto informace obsahují URL obrázku, jeho stav načtení a informace o výšce či šířce(...) Ale jak se dá zjistit stav jeho načtení už tam není. Jak tedy mohu zjistit stav načtení obrázku? |
||
Bubák Profil |
#2 · Zasláno: 9. 10. 2008, 13:15:21
Budu hádat, asi jde o událost onload.
|
||
yFang Profil |
#3 · Zasláno: 9. 10. 2008, 13:29:29
Takže teda takhle:
img = new Image(); img.src = 'obrazek.jpg'; img.onload = nejakaFunkce(); Nějaká vlastnost, která by vracela true/false podle toho jestli je načten (nebo něco podobného) asi není... :-) |
||
imploder Profil |
#4 · Zasláno: 9. 10. 2008, 14:35:30 · Upravil/a: imploder
Jestli chceš, aby se ukazovalo takové to běhající kolečko nebo jiná značka sdělující, že obrázek se načítá, tak můžeš obrázek v CSS schovat (visibility:hidden), na pozadí mu nastavit doprostřed obrázek s tím kolečkem (nebo co tam má být) a dát mu onload="this.style.visibility='visible'".
Samozřejmě je důležité, aby značka načítání měla zanedbatelnou velikost ve srovnání se samotným obrázkem, aby to nezdržovalo a mělo to nějaký smysl. |
||
peta Profil |
#5 · Zasláno: 9. 10. 2008, 16:00:46
yFang
http://www.zive.cz/Java--JavaScript/Vyuka-JavaScriptu--4/sc-76-sr-1-a- 104726/default.aspx dil 4, v tabulce tag img jsi asi preskocil http://www.zive.cz/Clanky/Vyuka-JavaScriptu---11/sc-3-a-105024/default .aspx dil 11 to zase vyuziva pro ramy Je fakt, ze jsem dal vyhledavat primo udalost onload, kazdopadne, kdyz ma neco dil 7, tak se treba podivat i na ostatni. image onload vyuka javascript Pravda je, ze to tam byt melo. http://www.volny.cz/peter.mlich/hry/ sokoban, zjistuji tam dostupnost obrazku pres onload a zakazuji zobrazeni pismenek, pokud se obrazek podari nacist. |
||
_es Profil |
#6 · Zasláno: 9. 10. 2008, 16:50:52
yFang
„img.onload = nejakaFunkce();“ Skôr asi: img.onload = nejakaFunkce; |
||
yFang Profil |
#7 · Zasláno: 9. 10. 2008, 17:47:38
peta
Ok. Kouknu na to. _es Moc nechápu, cose mi snažíš sdělit. Funguje obojí, jak se závorkami, tak bez závorek. |
||
_es Profil |
#8 · Zasláno: 9. 10. 2008, 18:08:38 · Upravil/a: _es
yFang
„Moc nechápu, cose mi snažíš sdělit. Funguje obojí, jak se závorkami, tak bez závorek.“ To by som sa dosť čudoval. img.onload = nejakaFunkce(); img.onload = nejakaFunkce; Takže keby malo fungovať oboje rovnako, musela by funkcia nejakaFunkce vracať samu seba (odkaz na samu seba). Čo by bolo ešte čudnejšie, než keby rozumne fungovalo to prvé. |
||
yFang Profil |
#9 · Zasláno: 9. 10. 2008, 19:10:36
_es
Nevím, co znamená čudoval nebo čudnejšie, ale zkus si nějaký takový jednoduchý skript: function hotovo() { alert('Obrázek je načten!') } img = new Image(); img.src = 'obrazek.jpg'; img.onload = hotovo(); A zkus si ty závorky dát pryč. Teď mi najdi 10 rozdílů. :-) |
||
Chamurappi Profil |
#10 · Zasláno: 9. 10. 2008, 19:23:40 · Upravil/a: Chamurappi
Reaguji na yFanga:
„Funguje obojí, jak se závorkami, tak bez závorek“ Syntakticky to vyhovuje, ale dělá to něco jiného. „Nevím, co znamená čudoval nebo čudnejšie“ Divil a divnější. „Teď mi najdi 10 rozdílů. :-)“ Já jeden docela zásadní vidím: odmažeš-li závorky, funkce „hotovo“ se ti nezavolá hned, ale až po načtení toho obrázku. Nedává smysl přiřazovat do img.onload návratovou hodnotu funkce „hotovo“ (která mimochodem nic nevrací). Dává smysl přiřazovat tam funkci. |
||
_es Profil |
#11 · Zasláno: 9. 10. 2008, 19:30:20
yFang
„A zkus si ty závorky dát pryč. Teď mi najdi 10 rozdílů. :-)“ V tom tvojom scripte sa zobrazí Obrázek je načten! aj keď sa žiadny obrázok obrazek.jpg nanačíta. Ak sa posledný riadok upraví na img.onload = hotovo; tak sa žiadna hláška neobjaví. Sprav si ako chceš, skúšal som len poradiť. |
||
imploder Profil |
#12 · Zasláno: 9. 10. 2008, 19:32:34
Chamurappi, yFang, _es
Co píšete zní logicky, ale jak to, že se běžně píšou funkce do atributů jako onload="funkce()" a funguje to (provede se funkce, nezapíše se její hodnota)? |
||
Chamurappi Profil |
#13 · Zasláno: 9. 10. 2008, 19:37:05 · Upravil/a: Chamurappi
Reaguji na implodera:
Do atributů se už totiž píše tělo zpracovávající funkce. Ekvivalentem ke tvému kousíčku kódu je přiřazení: něco.onload = function(event) { funkce(); }; |
||
_es Profil |
#14 · Zasláno: 9. 10. 2008, 19:40:16
imploder
„Co píšete zní logicky, ale jak to, že se běžně píšou funkce do atributů jako onload="funkce()" a funguje to (provede se funkce, nezapíše se její hodnota)?“ Iné je priradenie funkcie v HTML, iné v kóde JavaScriptu. V HTML je požadované do atribútu uviesť reťazec, ktorý je možné vyhodnotiť ako príkaz JavaScriptu a ten sa pri príslušnej udalosti vykoná. |
||
yFang Profil |
#15 · Zasláno: 9. 10. 2008, 19:41:37
Chamurappi
Jo takhle to funguje. To máte říct hned. _es Tak to promiň, od tebe jsem to nepochopil. |
||
yFang Profil |
#16 · Zasláno: 10. 10. 2008, 09:57:54
Napadla mě ještě taková věc: Jak by se tohle vyřešilo, kdyby se funkce, kterou chci zavolat po načtení obrázku, měla nějaké parametry?
|
||
_es Profil |
#17 · Zasláno: 10. 10. 2008, 10:49:27
yFang
„Napadla mě ještě taková věc: Jak by se tohle vyřešilo, kdyby se funkce, kterou chci zavolat po načtení obrázku, měla nějaké parametry?“ Podobný problém: http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=8&topic=82 256 Vlastne by nešlo o paramere funkcie, ale o novú nepomenovanú funkciu, ktorá by v sebe obsahovala volanie pôvodnej funkcie a ten "parameter" si "zapamätá" pri svojej definícii. Ak myslíš argumenty funkcie, k tým je možné pristupovať pomocou arguments[]. |
||
HGD Profil |
#18 · Zasláno: 10. 10. 2008, 19:06:08
já sem to nějak nepobral s tim CSS, což mi připadalo takový nejrychlejší, taky by se mi hodil takový to olečo než se načte obrázek ;)
|
||
imploder Profil |
#19 · Zasláno: 12. 10. 2008, 13:54:59
|
||
HGD Profil |
#20 · Zasláno: 12. 10. 2008, 15:32:59 · Upravil/a: HGD
to vypadá hezky, ale poradil by mi někdo jak to napsat do scriptu v JS a ne do řádku s HTML, nějak si s tim newim rady. díky
EDIT: už to mam, jenom zpětný lomítka sem tam neměl, jinak moc díky |
||
Str4wberry Profil |
#21 · Zasláno: 12. 10. 2008, 18:22:48
Co takhle nastavit to pozadí jako background pro <img>?
|
||
imploder Profil |
#22 · Zasláno: 12. 10. 2008, 18:48:36
Str4wberry
„Co takhle nastavit to pozadí jako background pro <img>?“ Zobrazí se až společně s obrázkem takže během načítání nebude vidět vůbec nic. Tag <img> má na začátku visibility:hidden a platí to i pro jeho pozadí. Takže kolečko se musí zobrazovat v nějakém jiném tagu, který je během načítání vidět. |
||
Str4wberry Profil |
#23 · Zasláno: 12. 10. 2008, 18:54:57
Nejdřív se zobrazí pozadí, protože se načte dřív, potom jej překryje obrázek načtený do <img>.
|
||
imploder Profil |
#24 · Zasláno: 12. 10. 2008, 18:59:49
Str4wberry
„Nejdřív se zobrazí pozadí, protože se načte dřív, potom jej překryje obrázek načtený do <img>.“ To je ale jedno, protože se to celé zobrazí najednou až po načtení obrázku už s pozadím překrytým obrázkem. Do té doby z <img> prostě není nic vidět. Zkoušel jsem to. |
||
peta Profil |
#25 · Zasláno: 13. 10. 2008, 11:22:19
imploder
Poznamka mimo, javascriptem lze prednacitat obrazky. Obvykle na javascript prohlizec ceka, coz by se dalo vyuzit treba takto: <div> <script>document.write('<IMG src="nacitani.gif">')</script> <img onload="this.parent.img[0].style.display:none"> </div> Predpokladam, ze se to bude chovat takto: * dokument nacte javascript, nacte obrazek nacitani * pak teprve zacne pracovat s IMG pod nim a po jeho nacteni da obrazek nula na display:none Nemam to vyzkousene, muze se to chovat take jinak. |
||
Chamurappi Profil |
#26 · Zasláno: 13. 10. 2008, 11:29:21
Reaguji na peta:
„Predpokladam, ze se to bude chovat takto“ Nebude, je to úplná blbost, mateš lidi. Opět porušuješ pravidla pro tebe stanovená. Další tvé příspěvky v tomto vlákně nejsou žádoucí. |
||
Časová prodleva: 13 dní
|
|||
Str4wberry Profil |
#27 · Zasláno: 26. 10. 2008, 11:10:05
„To je ale jedno, protože se to celé zobrazí najednou až po načtení obrázku už s pozadím překrytým obrázkem. Do té doby z <img> prostě není nic vidět. Zkoušel jsem to.“
Já to také zkoušel. Kdysi jsem měl na jednom webu jako pozadí obrázků text typu „Obrázek se načítá…“, který byl vidět do chvíle, než se obrázek načetl. |
||
Časová prodleva: 16 let
|
0