2012-12-18 14 views
6

Moja strona ładuje obrazy bardzo powoli. Pojawia się tekst, następnie kilka tabel, a następnie kilka obrazów ... a następnie - obraz tła ciała.
Jak mogę wymusić, aby nic nie było wyświetlane, dopóki cała strona nie będzie gotowa?Jak zapobiec stopniowemu wyświetlaniu strony?

+0

@nerdwaller, dziękuję. – Bonaca

+0

Mam nadzieję, że to ci się uda, zgadzam się z najlepszą odpowiedzią. Jakieś przetwarzanie powinno pokazywać, aby ludzie nie myśleli, że masz kiepski serwer. – nerdwaller

+0

Tak, widziałem twój link i wydaje mi się, że będę taca z małym obrazem gif (loader) i jQuery onload(), aby zmienić css obrazów. Może powinieneś zaprojektować swój komentarz jako odpowiedź. Dzięki jeszcze raz. – Bonaca

Odpowiedz

3

Prawdopodobnie najłatwiejszym/najlepszym sposobem byłoby użycie Javascript, aby to zrobić. Głównym sposobem, w jaki to widziałem, jest obsługa gotowego dokumentu, odsłaniająca wszystkie ukryte rzeczy.

$(document).ready(function() { $('*').show(); }); // Or something similar. 

Oczywiście, ludzie lubią widzieć jakieś sprzężenie zwrotne „postępu” tak witryna nie pojawia się źle kodowane lub jeśli serwer jest śmieci. A więc pasek ładowania lub cokolwiek innego.

Jak wspomniałem powyżej, najlepszym miejscem na tego typu pytania jest Stack Overflow, a być może zostanie ono przeniesione tam przez osobę o wyższej randze. W międzyczasie, tutaj jest bardzo similar question na przepełnieniu stosu.

+0

'.ready()' zostanie uruchomione po zakończeniu DOM, * przed załadowaniem * zdjęć, więc PO będzie nadal mieć ten sam problem (np. oczekiwanie na załadowanie obrazów). Z dokumentacji jQuery na '.ready()': "* W przypadkach, gdy kod opiera się na załadowanych zasobach ... kod powinien zostać umieszczony w procederze obsługi dla zdarzenia' load' zamiast tego. * "OP powinien poczekać na' okno .onload'. – apsillers

4

Można dodać klasę na body który ma display:none i usunąć go po załadowaniu strony ..

<body class="loading"> 
... 
</body> 

i

<script> 
    window.onload = function(){document.body.className = '';}; 
</script> 
Powiązane problemy