• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Preload screen

Object Storage Arubacloud
0 głosów
194 wizyt
pytanie zadane 10 lipca 2017 w JavaScript przez Alex.Ironside Stary wyjadacz (14,900 p.)
Witam. Sytuacja wyglada tak. W tle strony mam slider, jest tam lacznie okolo 30 zdjec. (Spokojnie to tylko na pc, na responzywnej slider sie nie zalacza). Ponadto w tle bedzie film. Czyli strona okolo 10MB i jedyne co moge z tym zrobic to preload screen. I teraz pytanie. Czy jest jakis event/sposob dzieki ktoremu bede mogl wczytac zdjecia i film i wtedy poczekac na event? Cos jak $(document).onload ale dla wszystkich plikow. Czy lapac te 30 zdjec i wtedy jak juz beda w zmiennych wywolac zakonczenie animacji?
komentarz 10 lipca 2017 przez ScriptyChris Mędrzec (190,190 p.)

Czy jest jakis event/sposob dzieki ktoremu bede mogl wczytac zdjecia i film i wtedy poczekac na event?

Czy te multimedia wczytują się XHRkami, czy są już zakodowane w HTML?

komentarz 10 lipca 2017 przez Alex.Ironside Stary wyjadacz (14,900 p.)
HTML
komentarz 10 lipca 2017 przez ScriptyChris Mędrzec (190,190 p.)
Czy ich źródłem jest ta sama domena, czy pochodzą z różnych domen?
komentarz 10 lipca 2017 przez Alex.Ironside Stary wyjadacz (14,900 p.)
Na tym samym serwerze

1 odpowiedź

0 głosów
odpowiedź 10 lipca 2017 przez ScriptyChris Mędrzec (190,190 p.)
wybrane 10 lipca 2017 przez Alex.Ironside
 
Najlepsza

Możesz na start aplikacji pokazać swoje okno ładowania. Podpinasz się w międzyczasie listenerami 'load' na wszystkie multimedia (możesz do tego celu każdemu HTMLowi nadawać customowy atrybut data-lazy-loaded). Tworzysz tablicę promisów i gdy wszystkie multimedia się załadują (czyli ich promisy się "zresolwują" a.k.a "spełnią") to ukrywasz loader (jeśli dobrze zrozumiałem, co chcesz zrobić).

const lazyLoadedElements = [...document.querySelectorAll('[data-lazy-loaded]')];
const promises = lazyLoadedElements.map( (element) => {
    return new Promise( (resolve) => {
        element.addEventListener( 'load', () => { resolve(element); })
    } );
) );

Promise.all( promises )
             .then( (response) => { 
                 /** ukrywasz ekran ładowania */ 
             }, (reason) => { 
                 /** nie pobrało się, wyświetlasz jakiś komunikat, albo inaczej to obsługujesz */
             } );

 

komentarz 10 lipca 2017 przez Alex.Ironside Stary wyjadacz (14,900 p.)
Generalnie chodzi o to ze:

Mam 5 sekcji. Kazda sekcja ma w background-image 4 zdjecia, ktore sie zmieniaja, i chce te 4 zdjecia wczytac zanim otworzy sie strona, coby nie dawac uzytkownikowi na wpol bialej strony
komentarz 10 lipca 2017 przez ScriptyChris Mędrzec (190,190 p.)
Przecież chciałeś użyć ekranu ładowania, wtedy użytkownik nie zobaczyłby pustej strony.
komentarz 10 lipca 2017 przez Alex.Ironside Stary wyjadacz (14,900 p.)
No tak. Ale chodzi o to ze mam wiecej zdjec niz to ktore jest w chwili ladowania w tle. Wiec czy te promisy zadzialaja na to?
komentarz 10 lipca 2017 przez ScriptyChris Mędrzec (190,190 p.)

W promisy owijasz te multimedia, które po zakończeniu ładowania wyłączą ekran ładowania. Chodzi o to, aby - tak jak napisałeś w pytaniu - odpalić trigger, gdy wszystkie wybrane multimedia się załadują (czyli te w slajderze/slajderach). Promisy ułatwiają w tym przypadku sprawdzenie, czy wszystkie multimedia już się załadowały.

Chyba, że źle Ciebie zrozumiałem:

Czy jest jakis event/sposob dzieki ktoremu bede mogl wczytac zdjecia i film i wtedy poczekac na event?

Co oznacza "event/sposób, dzięki któremu można wczytać zdjęcia/filmy i poczekać na event"? Event load odpala się, gdy dany zasób został wczytany (czy to strona, czy obrazek).

komentarz 10 lipca 2017 przez Alex.Ironside Stary wyjadacz (14,900 p.)
Chodzi mi o to ze jezeli w jQuery dam:

$(document).onload() to on poczeka az sie zaladuje strona i te moje 5 obrazkow z ktorymi sekcje zaczynaja, ale nie te ktore sa zamieniane w sliderze w pliku js. Chyba ze sie myle.

I o wlasnie taki event mi chodzilo
komentarz 10 lipca 2017 przez ScriptyChris Mędrzec (190,190 p.)

To dodaj sobie te obrazki w sliderach przez JavaScript - wtedy, gdy strona z początkowymi sekcjami już będzie załadowana. Czyli w $(document).onload() utwórz obrazki (nadając im atrybut src) i dodaj je po prostu do strony (jQuery.append() lub podobna metoda).

komentarz 10 lipca 2017 przez Alex.Ironside Stary wyjadacz (14,900 p.)
Czyli jezeli w pliku js dodam sciezki do tych obrazkow to document.onload poczeka na nie?
komentarz 10 lipca 2017 przez ScriptyChris Mędrzec (190,190 p.)

Bezpieczniej jest użyć $(window).on('load', function() {} )

komentarz 10 lipca 2017 przez Alex.Ironside Stary wyjadacz (14,900 p.)
ok dzieki!

Podobne pytania

0 głosów
1 odpowiedź 230 wizyt
pytanie zadane 24 maja 2016 w JavaScript przez niezalogowany
0 głosów
1 odpowiedź 160 wizyt
pytanie zadane 3 maja 2015 w HTML i CSS przez Wojciech Rokicki Użytkownik (850 p.)
0 głosów
1 odpowiedź 144 wizyt
pytanie zadane 19 czerwca 2023 w JavaScript przez pj-1024 Użytkownik (670 p.)

92,567 zapytań

141,420 odpowiedzi

319,616 komentarzy

61,953 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...