Autor Zpráva
metalmaus
Profil
Mám skript:

var nick = chat_jmeno + '.gif';
img = new Image();
img.src = nick;
if (img.height != 0) {
$('#avatar').attr ('src', nick);
}

který mění obrázek na stránce <img id="avatar src="picture.gif">, ale ono to funguje v prohlížečích jen někdy. Například, při prvním načtení se obrázek nezmění a po aktualizaci stránky ano, ale také jen někdy.
Mám pocit jakoby byl problém s rychlostí načítání obrázků do objektu nebo s keší, ale nevim. Firebug console ve Firefoxu nezobrazuje žádnou chybu, jen Chrome vývojářská konzole zobrazí toto:

Resource interpreted as Image but transferred with MIME type text/html: "http://addres...".

Nemáte někdo ponětí, v čem by mohla být chyba nebo jak na to jít jinak?
Chamurappi
Profil
Reaguji na metalmause:
do objektu Image pomocí jQuery
Do objektu Image nenačítáš pomocí jQuery. Jediné, co z uvedeného kódu souvisí s jQuery, je $('#avatar').attr … a v tom problém není.

při prvním načtení se obrázek nezmění
Pátral jsi po tom, čím to je? Jestli třeba v tu chvíli není img.height rovno nule? Nejspíš je, protože obrázek se ještě nestihl načíst, musíš počkat na onload.

Resource interpreted as Image but transferred with MIME type text/html
Určitě existuje ten obrázek? Typickou příčinou téhle hlášky je, že se do obrázku zkouší načíst chybová stránka 404 (která bývá text/html).
metalmaus
Profil
Díky. Zkusil jsem to takhle:

var nick = chat_jmeno + '.gif';
img = new Image();
img.src = nick;
img.onload = function() {
if (img.height != 0) {
$('#avatar_form').attr ('src', nick);
}
}

a funguje to pokud takhle měním src jednoho obrázku. Ale jakmile to mám ve smyčce $each(...), tak se mi výměna neprovede!?

Došlo mi, že hláška o chybném MIME s tímhle problémem nesouvisí.
pcmanik
Profil
metalmaus:
A co máš v tej tvojej smičke?
Tá podmienka čo máš v onload je absolútne zbytočná. Totiž načítaš obrázok, potom overíš či náhodou nemá výšku nula a potom mu znovu priradíš to isté src?
Mimochodom premennú img nemáš nikde definovanú.
wtf
Profil *
Po ID ti chybí uvozovka.
 <img id="avatar" src="picture.gif">
metalmaus
Profil
wtf: chyba s uvozovkou vznikla při přepisu

pcmanik: v té smyčce je mnoho věcí, nesouvisející s tímhle. V té podmínce ověřuju, jestli výška objektu img není nula, ale pak mu nic znovu nepřiřazuju, zdroj přiřazuju objektu $('#avatar') nebo se mýlím?

A v tom možná bude problém, že sice ošetřuju načtení obrázku do img, ale ne do $('#avatar'). Škoda, že nejde udělat něco jako $('#avatar').src = img.src.
_es
Profil
metalmaus:
Do vlastnosti onload musí byť priradená funkcia ešte pred priradením adresy v src - ak je obrázok v cache pamäti môže nastať udalosť okamžite po zadaní vlastnosti src. Prečo zisťuješ, či sa výška rovná 0? Nepotrebuješ namiesto toho použiť udalosť onerror?

Ale jakmile to mám ve smyčce $each(...), tak se mi výměna neprovede!?
Časté potíže, zajímavosti a poučné debaty » Používejte var.

$('#avatar_form').attr ('src', nick);
Doporučuji užívat standardní vlastnosti HTML DOMu místo getAttribute/setAttribute. Pre jQuery: api.jquery.com/prop

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:

Prosím používejte diakritiku a interpunkci.

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