2011-11-11 6 views
10

Mam niezręczny wizualny błąd. Chcę zmienić przejście na stronę w aplikacji. Niestety, po raz pierwszy zmieniam na inną stronę, zamiast przesuwać bieżącą stronę i nową stronę, aktualna strona jest natychmiast zastępowana nową stroną, a następnie wysuwana. Gdy pierwsza strona jest niewidoczna, wyświetlana jest nowa strona. Jednak za drugim razem działa jak urok!Przejście na przenośne urządzenie nawigacyjne Phonegap/jquery nie działa poprawnie przy pierwszym połączeniu

To działa na iPhone z jQuery Telefony + PhoneGap

Zrobiłem film, aby pomóc wyjaśnić problem: http://www.youtube.com/watch?v=Ybvzh_wTnSE

<body style="background-color: #000;"> 
     <div id="container" style="display:none;"> 
      <div id="side-menu" style="display:none;"> 
       <div id="header_top"></div> 
       <a href="#dives" onclick="showdives();"><div id="header_dives" class="selected"></div></a> 
       <div id="header_spacer1"></div> 
       <a href="#explore" onclick="showexplore();"><div id="header_explore"></div></a> 
       <div id="header_spacer2"></div> 
       <a href="#search" onclick="showsearch();"><div id="header_search"></div></a> 
       <div id="header_spacer3"></div> 
       <a href="#settings" onclick="showsettings();"><div id="header_settings"></div></a> 
       <div id="header_bottom"></div> 
      </div> 
      <div id="slide_mask"> 
       <!-- START of LOGIN page --> 
       <div data-role="page" id="login">   
        <div id="home_frame"> 
         <div id="home_logo"></div> 
         <div id="home_fblogin" onclick="login()"></div> 
         <div class="home_login"> 
          <p>Email: <input type="text" name="user[email]" size="30"/></p> 
          <p>Password: <input type="password" name="user[password]" size="30"/></p> 
          <button onclick="show_page_home();">LOGIN</button> 
         </div> 
        </div> 
       </div> 
       <!-- END of LOGIN page --> 

       <!-- START of LOGIN page --> 
       <div data-role="page" id="dives" class="right_pane">  
         <p>My dives !</p>  
       </div><!-- /content --> 
       <div data-role="page" id="explore" class="hidden right_pane"> 
         <p>My explore !</p>  
       </div><!-- /content --> 
       <div data-role="page" id="search" class="hidden right_pane">  
         <p>My search !</p>  
       </div><!-- /content --> 
       <div data-role="page" id="settings" class="hidden right_pane"> 
         <p>My settings !</p> 
         <button onclick="logout_db();">logout</button>  
       </div><!-- /content --> 
       <!-- END of LOGIN page --> 
      </div> 
     </div> 
     <div id="log"></div> 
     <div id="data"></div> 
    </body> 

a stosowne CSS:

body {margin: 0; font: 18px Helvetica; text-align: center; background-color: #000; background: url(../img/bg_big.png) repeat; 
     -webkit-user-select: none; /* prevent copy paste for all elements */ 
     } 
    #container { width:320px; height:460px; overflow: hidden;} 

    input{ -webkit-user-select: text; /* enable copy paste for elements with this class */} 
    a {-webkit-user-select: none; /* prevent copy paste for all elements */} 
    span {-webkit-user-select: none; /* prevent copy paste for all elements */} 

    #side-menu {z-index: 1000 !important; position: fixed; height: 460px; width: 56.5px; background: url(../img/bg_big.png) no-repeat; display: inline-block; 
    overflow: hidden; top: 0px; left: 0px; } 
    #header_top {background: url(../img/header/header_top.png) no-repeat; background-size: 56.5px 48.96px; width: 56.5px; height: 48.96px; display: block;} 
    #header_dives {background: url(../img/header/dives.png) no-repeat; background-size: 56.5px 51.75px; width: 56.5px; height: 51.75px; display: block;} 
    #header_dives.selected{background: url(../img/header/dives_selected.png) no-repeat;} 
    #header_spacer1{background: url(../img/header/header_space1.png) no-repeat; background-size: 56.5px 13.9px; width: 56.5px; height: 13.9px; display: block;} 
    #header_explore{background: url(../img/header/explore.png) no-repeat; background-size: 56.5px 51.75px; width: 56.5px; height: 51.75px; display: block;} 
    #header_explore.selected{background: url(../img/header/explore_selected.png) no-repeat;} 
    #header_spacer2{background: url(../img/header/header_space2.png) no-repeat; background-size: 56.5px 15.33px; width: 56.5px; height: 15.33px; display: block;} 
    #header_search{background: url(../img/header/search.png) no-repeat; background-size: 56.5px 51.75px; width: 56.5px; height: 51.75px; display: block;} 
    #header_search.selected{background: url(../img/header/search_selected.png) no-repeat;} 
    #header_spacer3{background: url(../img/header/header_space3.png) no-repeat; background-size: 56.5px 17.73px; width: 56.5px; height: 17.73px; display: block;} 
    #header_settings{background: url(../img/header/settings.png) no-repeat; background-size: 56.5px 51.75px; width: 56.5px; height: 51.75px; display: block;} 
    #header_settings.selected{background: url(../img/header/settings_selected.png) no-repeat;} 
    #header_bottom{background: url(../img/header/header_bottom.png) no-repeat; background-size: 56.5px 160px; width: 56.5px; height: 160px; display: block;} 

    .hidden {display: none;} 
    .right_pane{width: 263.5px !important; background: url(../img/right_bg.png) no-repeat; background-size:263.5px 460px; width: 263.5px; height: 460px; left: 56.5px !important;} 
    #slide_mask{ display: inline-block; overflow: hidden; padding-left: 56.5px; width: 263.5px; height: 460px; top: 0;} 

i tym bit JS:

/////////////////////////////////// 
    //MENU MECHANICS 
    /////////////////////////////////// 

    function showdives(){ 
     $("#side-menu .selected").removeClass("selected"); 
     $("#header_dives").addClass("selected"); 
    } 

    function showexplore(){ 
     $("#side-menu .selected").removeClass("selected"); 
     $("#header_explore").addClass("selected"); 
    } 
    function showsearch(){ 
     $("#side-menu .selected").removeClass("selected"); 
     $("#header_search").addClass("selected"); 
    } 
    function showsettings(){ 
     $("#side-menu .selected").removeClass("selected"); 
     $("#header_settings").addClass("selected"); 
    } 

Metody onclick dodają/usuwają "wybraną" klasę do/z pozycji menu.

+0

Przyjemne wideo i objaśnienie problemu. Twój problem prawdopodobnie znajduje się w twoim kodzie JavaScript, więc powinieneś również uwzględnić ten kod. – Spike

+0

zrobione :) jak widać to proste ... –

+0

również przejścia "pop" i "przerzucanie" działają jak uroku –

Odpowiedz

3

Uważam, że ludzie nazywają to "migotaniem", więc będziesz mieć lepsze wyniki, gdy będziesz tego szukał. Po rozglądając się, wygląda na to twój problem jest powszechny na android i może być rozwiązany poprzez dodanie następującego CSS:

.ui-page { 
    -webkit-backface-visibility: hidden; 
} 

Oto kilka odnośników:

+1

Hi Spike - próbowałem, ale to nie jest to :(Nie sądzę, że migocze:/ –

+0

Hmm ... Przepraszam, nie wiem wtedy. z emulatorem androida? Czy robi to samo w iOS? – Spike

+0

Mam tylko issi na iOS - Android jest w porządku (w obu przypadkach emu i urządzenie zachowują się tak samo) –

3

Ja i moi przyjaciele używamy J Zapytanie 1.2.

Rozwiązaniem tego problemu było wprowadzenie opcji przenoszenia danych = "brak". Może to nie może wyglądać tak, jak w przypadku telefonu komórkowego, ale działa i usuwa problem z migotaniem.

Mam nadzieję, że ta pomoc.

0

Miałem ten sam problem, ale jeszcze gorzej, gdy owijam aplikację mobilną Jquery w Phonegap. Migotały przejścia stron, ale interfejs był kompletnie zepsuty. Użyłem Jquery 1.8 i Jquery mobile 1.2 w tej aplikacji.

Próbowałem większość proponowanych tutaj rozwiązań na SO, ale nic nie działało. Potem znalazłem rozwiązanie this Piotra Walczyszyna, a wszystko działało jak marzenie! Wysoce zalecane dla wszystkich korzystających z Jquery mobile i Phonegap razem.