21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
yFang
Profil
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
Budu hádat, asi jde o událost onload.
yFang
Profil
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
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
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
yFang
img.onload = nejakaFunkce();
Skôr asi:
img.onload = nejakaFunkce;
Jedine že by funkcia nejakaFunkce vracala funkciu, čo by bolo dosť zvláštne.
yFang
Profil
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
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();
Zavolá funkciu nejakaFunkce a jej návratovú hodnotu priradí do vlastnosti onload objektu img.
img.onload = nejakaFunkce;
Priradí do vlastnosti onload objektu img funkciu nejakaFunkce (odkaz na ňu).
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
_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
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
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
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
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();
};
— Volání je tedy až uvnitř jiné funkce.
_es
Profil
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
Chamurappi
Jo takhle to funguje. To máte říct hned.

_es
Tak to promiň, od tebe jsem to nepochopil.
yFang
Profil
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
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
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
http://bprhad.wz.cz/f/loader.html
HGD
Profil
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
Co takhle nastavit to pozadí jako background pro <img>?
imploder
Profil
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
Nejdřív se zobrazí pozadí, protože se načte dřív, potom jej překryje obrázek načtený do <img>.
imploder
Profil
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
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
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í.
Str4wberry
Profil
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.

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