jquery mobile在頁面加載時添加加載中效果 document.ready 和window.onload執行順序比較

想要添加這個效果,先來弄明白頁面的加載和事件執行順序,看這個簡單例子:css

 1 <html xmlns="http://www.w3.org/1999/xhtml">
 2 <head >
 3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 4     <title>驗證加載順序</title>
 5     <script src="../Scripts/jquery-1.7.1.js"></script>
 6     <link href="../Scripts/Mobile/jquery.mobile-1.4.0.min.css" rel="stylesheet" />
 7     <script src="../Scripts/Mobile/jquery.mobile-1.4.0.min.js"></script>
 8     <script>
 9         alert("DOM還沒加載");        
10         window.onload = function () {           
11             alert('onload,圖片加載完');          
12         }
13         $(document).ready(function () {
14             alert('ready,dom加載完');    
15         })      
16     </script>
17 </head>
18 <body >
19     <form id="form1" runat="server">            
20         <img src="http://images.aviary.com/imagesv5/feather_default.jpg" />
21         <img src="http://car0.autoimg.cn/car/upload/2015/1/8/v_20150108092921264345010.jpg" />
22     </form>
23 </body>
24 </html>

執行結果:9行>14行>11行,9行代碼放置的上下位置不一樣,結果依然是同樣的。弄明白上面的順序以後,若是想讓頁面在加載以前顯示jquery mobile的加載器,而後等頁面數據請求執行完,圖片等多媒體加載完以後,再關閉加載器的話,就能夠按照如下思路來解決:html

 1 <html xmlns="http://www.w3.org/1999/xhtml">
 2 <head >
 3     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 4     <title>驗證加載順序</title>
 5     <script src="../Scripts/jquery-1.7.1.js"></script>
 6     <link href="../Scripts/Mobile/jquery.mobile-1.4.0.min.css" rel="stylesheet" />
 7     <script src="../Scripts/Mobile/jquery.mobile-1.4.0.min.js"></script>
 8     <script>
 9         setTimeout('showLoader()', 100);//這裏要延遲一下,直接調用沒法顯示加載器
10         //顯示加載器.for jQuery Mobile 1.2.0    
11         function showLoader() {
12             $.mobile.loading('show', {
13                 text: '正在登錄...', //加載器中顯示的文字  
14                 textVisible: true, //是否顯示文字  
15                 theme: 'a',        //加載器主題樣式a-e  
16                 textonly: false,   //是否只顯示文字  
17                 html: ""           //要顯示的html內容,如圖片等  
18             });
19         }
20         //隱藏加載器.for jQuery Mobile 1.2.0  
21         function hideLoader() {
22             $.mobile.loading('hide');
23         }
24         window.onload = function () {            
25             hideLoader();
26             //setTimeout('hideLoader()', 5000);//延遲5秒,模擬圖片和多媒體加載耗時
27         }
28         $(document).ready(function () {           
29             //setTimeout('hideLoader()', 5000);//延遲5秒,模擬頁面請求數據耗時,ajax異步請求等放在這裏
30         })
31     </script>
32 </head>
33 <body >
34     <form id="form1" runat="server">            
35         <img src="http://images.aviary.com/imagesv5/feather_default.jpg" />
36         <img src="http://car0.autoimg.cn/car/upload/2015/1/8/v_20150108092921264345010.jpg" />
37     </form>
38 </body>
39 </html>

說明:jquery

1)9行的代碼要稍做延遲執行,不然有可能上面引用的js文件尚未加載完,這時候調用showLoader方法,是沒法正確執行,就不能顯示加載器ajax

2)關閉加載器能夠放在document.ready或者window.onload中,具體看頁面的執行狀況須要。dom

3)若是網速足夠快,兩個圖片瞬間加載完成,有可能看不到明顯的加載器顯示和關閉的過程。異步

相關文章
相關標籤/搜索