Autor | Zpráva | ||
---|---|---|---|
metalmaus Profil |
#1 · Zasláno: 2. 2. 2013, 15:50:55
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 |
#2 · Zasláno: 2. 2. 2013, 16:39:28
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 |
#3 · Zasláno: 3. 2. 2013, 14:57:57
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 |
#4 · Zasláno: 3. 2. 2013, 15:50:38
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 * |
#5 · Zasláno: 3. 2. 2013, 16:23:55
Po ID ti chybí uvozovka.
<img id="avatar" src="picture.gif"> |
||
metalmaus Profil |
#6 · Zasláno: 3. 2. 2013, 17:17:42
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 |
||
Časová prodleva: 11 let
|
0