2011-11-29 13 views
26

Wygląda na to, że jQuery mobile dołącza wiadomość ładującą na stronie startowej. I naprawdę nie wiem, co się dzieje, ale rozważmy następujący prosty fragment:jQuery mobile dodaje "nagłówek ładowania" na stronę

<!DOCTYPE html> 
<html> 
    <head> 
    <title>sadFace</title> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no;" /> 
    <meta charset="utf-8" /> 
    <script src="http://code.jquery.com/jquery-1.6.4.min.js"></script> 
    <script src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script> 
    </head> 
    <body> 
    <h1>;__;</h1> 
    </body> 
</html> 

Mam nawet, aby przewinąć w dół, aby zobaczyć komunikat ładowania. Więc pomyślałem, że może się zdarzyć, bo nie nadążam typowy jQuery strony mobilnej anatomii ale:

<!DOCTYPE html> 
<html> 
    <head> 
    <title>Page Title</title> 
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.min.js"></script> 
    <script type="text/javascript" src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.js"></script> 
</head> 
<body> 
<div data-role="page"> 
    <div data-role="header"> 
     <h1>;_;</h1> 
    </div><!-- /header --> 

    <div data-role="content"> 
     <p>Same shit, different page.</p>  
    </div><!-- /content --> 

    <div data-role="footer"> 
     <h4><a href="http://www.google.com/pacman/">need cookies :C</a></h4> 
    </div><!-- /footer --> 
</div><!-- /page --> 
</body> 
</html> 

samo. Jestem całkowicie oszołomiony tym zachowaniem. Testuję również jQuery1.0rc2 z tym samym rezultatem, mimo że rozpocząłem swój projekt z zeszłego tygodnia i wygląda dobrze. Co się do cholery dzieje <. <

Wyszukiwanie w jQuery Mobile' js Uważam, że za wiadomość odpowiada initializePage: function(). Mogę wypowiedzieć się

//cue page loading message 
$.mobile.showPageLoadingMsg(); 

lub ustawić autoInitializePage: false ale raczej preferują rozwiązanie, które nie jest udziałem zmodyfikowanego pliku jQuery (o ile nie jest to bug).

Odpowiedz

37

Trzeba dodać CSS zbyt, to będzie w porządku:

<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" /> 

w szczegółach:

Zawsze stawia następujący kod HTML na dnie ciała:

<div class='ui-loader ui-body-a ui-corner-all'><span class='ui-icon ui-icon-loading spin'></span><h1></h1></div> 

To jest odpowiedni CSS (może więc możesz sam się z nim bawić, jeśli chcesz)

.ui-loading .ui-loader { display: block; } 
.ui-loader { display: none; position: absolute; opacity: .85; z-index: 100; left: 50%; width: 200px; margin-left: -130px; margin-top: -35px; padding: 10px 30px; } 

Funkcja showPageLoadingMsg dodaje klasę CSS „.ui ładowania” do znacznika HTML, a następnie staje się widoczny

+0

Z wyjątkiem tego, że CSS robi to samo irytujące, co wszystkie te frameworki - i stara się nadpisać preferencje układu dla podstawowych elementów, takich jak ... –

+0

Jak powstrzymać go przed wprowadzeniem h1? – Jayen

16

można zatrzymać autoInitializePage stosując poniższy Przed załadowaniem biblioteki jQuery mobile

jQuery(document).on("mobileinit", function() { 
    jQuery.mobile.autoInitializePage = false; 
}); 

Więcej informacji tutaj: http://api.jquerymobile.com/global-config/

2

Dodaj to do górnej części pliku JS

$.mobile.autoInitializePage = false;