2012-09-28 12 views
12

Czy można wykryć, kiedy HTML zakończył ładowanie i renderowanie na stronie? Jeśli tak to jak?Wykryj, kiedy HTML zakończyło ładowanie i renderowanie na stronie

Strona składa się z kodu HTML, wzywa do Ajaksu, odbiera dane z powrotem z połączeń Ajax mnóstwem javascript rzeczy i niektóre obrazy też. Chciałbym wykryć, kiedy wszystko się skończyło. Czego nie mogę zrobić, to przykleić wywołanie funkcji na końcu, ponieważ nie wiem, kiedy koniec.

Na przykład strona zawiera wiele elementów stylu ajax, które użytkownicy mogą wybierać, tzn. Użytkownik 1 może mieć inną liczbę elementów niż użytkownik 2, a nawet w innej kolejności.

Więc czego nie może zrobić, to wykorzystać ostatnią funkcję symulować koniec renderowania HTML, bo nie będzie wiedział, która funkcja będzie ostatnią funkcję.

+2

Byłoby miło wiedzieć, dlaczego to pytanie otrzymał głosów negatywnych. – oshirowanen

Odpowiedz

8

problem z odpowiadając na pytanie w ciągu ostatnich kilku zdaniach gdzie mówisz że nie wiesz, gdzie jest koniec z powodu wyborów użytkownika. Istnieją dwa automatyczne zdarzenia, do których można przypisać JavaScript. Co jQuery zwraca $(document).ready() co oznacza DOM jest gotowy do manipulacji (przed load i po skryptów zewnętrznych i CSS są załadowane) i to, co jest powszechnie nazywany ciało onload (w jQuery to może być zapisana jako $(window).load()), który biegnie za aktywa wszystko statyczne są przyniósł. Twoje połączenia Ajax będą się uruchamiały po tym, jak przynajmniej DOM będzie gotowy i nie ma zdefiniowanego zdarzenia dla tego, co dzieje się po nich wszystkich. W tym celu musisz śledzić je na własną rękę. Możesz użyć podejścia "ostatni koń z obory". Dodać niewielką trochę logiki do końca swojej Ajax wzywa, aby zobaczyć czy jest to ostatni i podnieść zdarzenia niestandardowego o nazwie „reallyAllDone”

-1

Tak onload

<body onload="load()"> 

To by wykryć, kiedy zawartość ciała zostały załadowane.

+1

Właśnie próbowałem tego z alertem w onload. Alert pojawia się, zanim strona zakończy ładowanie/renderowanie. Zamknięcie alertu pozwala reszcie strony zakończyć ładowanie/renderowanie, ale nadal nie jest w porządku, ponieważ chcę, żeby alert pojawiał się dopiero po zakończeniu ładowania na ekranie. – oshirowanen

+0

Czy zdarzenie onload zostało dołączone do ciała? – noel

+0

Właśnie przetestowałem to tak jak ten alert oshirowanen

-2

$ (document) .ready

pomoże Ci wiedzieć, kiedy dom zakończyła swój imprezie i jej gotowy

+0

'.ready' nie będzie czekać na wczytanie obrazów. –

+0

Mam wszystkie moje wywołania ajax i funkcje jquery w $ (document) .ready(). Nie powinienem mieć tych w $ (document) .ready()? Właśnie próbowałem przenieść wszystko z $ (document) .ready() i właśnie mając alert w $ (document) .ready(). Cała strona tylko częściowo się wyświetla i otrzymuję alert. Zamknięcie alertu nie kończy ładowania strony. – oshirowanen

Powiązane problemy