利用JS彈出層實現簡單的動態提示“正在加載中,請稍等...


 最近項目中大量用到了JQuery中的Ajax異步加載數據,數據量非常大,導致每次加載的時候都感覺到非常非常慢,讓客戶體驗非常不好,就想到用JS做一個簡單的提示。

JQuery版本:1.7.1;

編寫一個JS類(ck.layer.js):

[javascript] view plaincopy
  1. /************************************* Achievo.Javascript Library ************************** 
  2. * Using jQuery 1.7.1 
  3. * Using cks.js 1.0.1 
  4. * Name : ck.layer.js 
  5. * Create by Angle.Yang on 2012/03/07 [V1.0.0] 
  6. *******************************************************************************************/  
  7. (function ($) {  
  8.   
  9.     $.fn.masklayer = function (settings) {  
  10.         /// <summary>  
  11.         /// 模態窗口,繼承 easy-ui.window  
  12.         /// </summary>  
  13.         /// <param name="settings" type="object">擴展了{title:[div中的內容], action:[執行的動作,目前支持"close"], result:[返回結果]}</param>  
  14.         /// <returns type="void" />  
  15.   
  16.         settings = $.extend(true, { title: '加載中...', action: "open" }, settings);  
  17.   
  18.   
  19.         /// <summary>  
  20.         /// 初始化所有 cks 樣式的按鈕(頁面運行時進行初始化)  
  21.         /// </summary>  
  22.         /// <returns type="void" />  
  23.   
  24.         _init = function () {  
  25.             if (settings.action == "open") {  
  26.                 if ($("#div_load").length == 0) {  
  27.                     var boardDiv = "<div id='div_load'><\/div>";  
  28.                     $(document.body).append(boardDiv);  
  29.                 }  
  30.                 if ($("#div_load").length > 0) {  
  31.                     $("#div_load").fix_ie6Select();  
  32.                     $("#div_load").css("display""block");  
  33.                     $("#div_load").css("height", document.body.offsetHeight);  
  34.                     $("#div_load").html(settings.title);  
  35.                 }  
  36.             }  
  37.             else if (settings.action == "close") {  
  38.                 if ($("#div_load").length > 0) $("#div_load").css("display""none");  
  39.             }  
  40.             else if (settings.action = "setTitle") {  
  41.                 if ($("#div_load").length > 0) $("#div_load").html(settings.title);  
  42.                 else {  
  43.                     var boardDiv = "<div id='div_load'>" + settings.title + "<\/div>";  
  44.                     $(document.body).append(boardDiv);  
  45.                     $("#div_load").fix_ie6Select();  
  46.                     $("#div_load").css("display""block");  
  47.                     $("#div_load").css("height", document.body.offsetHeight);  
  48.                 }  
  49.             }  
  50.         };  
  51.   
  52.   
  53.         return (function () { _init() })();  
  54.   
  55.     };  




$("#div_load").fix_ie6Select(); 這句調用另一個JS,主要作用是兼容IE6遮罩一些控件(這個是我老大寫的):

  1. [javascript] view plaincopy
    1. /************************************* Achievo.Javascript Library ************************** 
    2. * Using jQuery 1.7.1 
    3. * Using cks.js 1.0.2 
    4. * Name : ck.fixer.js 
    5. * Create by Toky on 2012/02/14 [V1.0.0] 
    6. *******************************************************************************************/  
    7.   
    8. (function ($) {  
    9.     $.fn.fix_ie6Select = function () {  
    10.         /// <summary>  
    11.         /// 兼容彈出層在 IE6 下不能掩蓋 Select  
    12.         /// </summary>  
    13.         /// <returns type="void" />  
    14.         return this.each(function (index) {  
    15.             var frm = $(this).find('iframe[tag*="ie6Selector"]');  
    16.             if (cks.browser.IE6) {  
    17.                 var w = $(this).width();  
    18.                 var h = $(this).height();  
    19.                 if (frm.length == 0) {  
    20.                     $(this).prepend('<iframe tag="ie6Selector" src="" frameborder="no" marginwidth="0" marginheight="0" style="border:none;position:absolute;visibility:inherit;top:0px;left:0px;width:' + w + 'px;height:' + h + 'px;z-index:-1;"></iframe>');  
    21.                 }  
    22.                 else {  
    23.                     frm.css("width", w);  
    24.                     frm.css("height", h);  
    25.                 }  
    26.             }  
    27.         });  
    28.     };  
    29. })(jQuery);  

  2. })(jQuery);  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章