2012-02-22 12 views
5

więc budowałem sobie mobilną aplikację internetową i próbuję ukryć przetasowanie układu po tym, jak użytkownik obrócił telefon (mam portret i układ krajobrazu ustawiony przez js).Funkcja pożaru przed oknem zmienia rozmiar zawartości przy zmianie orientacji?

myślałem, że powinienem być w stanie ustawić $('body').display = "none"; Gdy wyzwalana rozmiaru i zanikać ciało z powrotem w po drugie i tak, jednak losowe nadal zdarza się przed display = "none" rzutach.

Czy istnieje jakiś sposób, wystrzelić funkcję po obróceniu się strony, aby ukryć elementy przetasowania? Próbowałem też zorientować się w orientacji na słuchaczy, ale wydaje się, że strzelają bezpośrednio po wydarzeniu.

Odpowiedz

0

można opóźnić przetasowania z timeout:

$(window).resize(function(){ 
    $('body').hide(); 
    setTimeout(function(){ 
     reshuffle(); 
     $('body').show(); 
    }, 100);//100ms 
}); 
+0

dzięki za wejście, to jest prawie dokładnie kod IM obecnie używając, przeglądarka wydaje się renderować nowy układ orientacji ze starymi wartościami css, zanim .hide ma czas na wystrzelenie przez zmianę rozmiaru (tak przez około 50ms widzę układ niezasilony) , myślę, że to może nie być wykonalne w jakiś sposób = s – user885663

+0

dziękuję, przyłączyłem to do mojego zdarzenia onorientationchange zamiast zmienić rozmiar, aby spróbować jeszcze raz i wygląda na to, że działa ono nieco lepiej, może w 50% przypadków wygląda na czyste i uporządkowane. Pomaga również ustawić dowolne elementy kontenera na kolor bg, tak aby domyślny biały bg się nie wyświetlał. – user885663

0

można spróbować w ten sposób:

$.when($('body').hide()).then(function() { 
    $(window).resize(function(){ 
     setTimeout(function(){ 
      reshuffle(); 
     }, 100);//100ms 
    }); 
}); 

documentation

+0

dziękuję za szybką odpowiedź, dam to spróbować jednak nie sądzę, że rozwiąże problem, ponieważ .hide faktycznie nie kopie do momentu po zdarzeniu resize (chyba, że ​​.then może ustawić kolejkę do istniejącej zmiany rozmiaru), więc (jeśli im myślę o tym, jak twój kod będzie działał we właściwy sposób) "zmieni rozmiar po obróceniu telefonu" wykryje, że ciało ukryło> następnie poczekasz na zmianę rozmiaru> zwolni funkcję opóźnionego układu? – user885663

+0

Sposób, w jaki zrozumiałem Twój problem że chciałeś przetasować po ukryciu ciała, i wierzę, że to robi (o ile się nie mylę) –

+0

Nie mam dość czasu, aby przetestować to teraz, ale dam ci znać, kiedy wprowadzę to w czyn. tak jak to zrobi zadanie, problemem, z którym się zmagam jest to, że przeglądarka na telefonie nie jest wystarczająco szybka, aby dotrzymać kroku orientacji i ukryć zawartość, zanim trafi ona w krajobraz. – user885663