Article View: pl.comp.lang.javascript
Article #49211Jak sprawdzić, czy <img> lub tła są załadowane?
From: WebCM
Date: Sun, 09 Aug 2009 11:19
Date: Sun, 09 Aug 2009 11:19
39 lines
3116 bytes
3116 bytes
Firefox traktuje stronę za załadowaną, gdy pobierze HTML, CSS, skrypty
i wszystkie obrazki <img>. Nie wiem, jak jest w IE. Dodatkowo Opera
pobiera obrazki dopiero wtedy, gdy są potrzebne - przynajmniej starsze
wersje.
Tworzę nową platformę dla gry logiczno-przygodowej. Postanowiłem, że
obrazy pokojów będą po prostu tłami. Podobnie inne obiekty znajdujące
się w nich. Po to, aby zwiększyć stabilność interfejsu.
Dopóki nie załaduje się grafika, gra wyświetla komunikat
"Ładowanie..."
Teraz nie ma takiej pewności. Jeśli prawie wszystko będzie tłem,
przeglądarka natychmiast wyświetli pierwszy pokój. Porażka na wejście.
Obrazki (tła) wciąż będą ładować się. Gracze z szybkim łączem tego
nawet nie zauważą, ale są możliwe sytuacje, w których transfer jest
mocno spowolniony. I jak tu można grać?
Preload w stylu new Image(...).src = ""; też nie jest najlepszym
wyjściem. Nigdy nie wiadomo, jak zachowa się przeglądarka. Jeżeli
mechanizm CACHE jest wyłączony - wtedy zacznie ściągać osobno grafikę
do Image i do background-image? Przeglądarka napotyka new Image().src
= "" i rozpoczyna pobieranie obrazka. Następnie zauważa background-
image: url(). Czy wtedy czeka po prostu, aż pobierze się new Image
()... czy pobiera go drugi raz równorzędnie? Chodzi o wszystkie
przeglądarki.
Teraz inna sytuacja. Pobieram kod XHTML za pomocą AJAX. Tam znajdują
się obrazki <img>. Mogę przejść dalej, gdy są załadowane. Tylko jak to
sprawdzić? Własność responseText wyniesie 4, gdy przeglądarka pobierze
XHTML, ale obrazki mogą wciąż ładować się. Czy w tej sytuacji
pozostaje tylko preload new Image() albo document.getElementsByTagName
('img') i sprawdzanie, czy został pobrany...?
Dlaczego AJAX? Otóż na początku pojawi się widok wszystkich dostępnych
etapów. Po kliknięciu 1 z nich do akcji wkracza AJAX, który ładuje
XHTML.
Zatem co radzicie?
Technical Details
Message-ID:
<41631784-3bee-4d79-aab7-7c9219cd4877@o35g2000vbi.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!o35g2000vbi.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!o35g2000vbi.googlegroups.com!not-for-mail From: WebCM <webcm123@gmail.com> Newsgroups: pl.comp.lang.javascript Subject: Jak sprawdzić, czy <img> lub tła są załadowane? Date: Sun, 9 Aug 2009 04:19:09 -0700 (PDT) Organization: http://groups.google.com Lines: 49 Message-ID: <41631784-3bee-4d79-aab7-7c9219cd4877@o35g2000vbi.googlegroups.com> NNTP-Posting-Host: 83.1.217.52 Mime-Version: 1.0 X-Trace: posting.google.com 1249816749 10780 127.0.0.1 (9 Aug 2009 11:19:09 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Sun, 9 Aug 2009 11:19:09 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: o35g2000vbi.googlegroups.com; posting-host=83.1.217.52; posting-account=KmuZcQoAAACFwi1E7xIpy-n6K4ZXwoJm User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729),gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit