使用 JQuery 和 CSS 显示任何任务或进行中的工作的进度条(加载框)






4.29/5 (17投票s)
如何在使用 JQuery 和 CSS 的情况下,在后端运行任何任务或工作时显示进度条(加载框)。
引言
本文档解释了如何在使用 JQuery 和 CSS 的情况下,在后端(后台进程)运行任何任务或工作时显示进度条(加载框)。
有时我们的网页中会有耗时的操作,例如照片上传、消息发送、附件上传等。 在这些类型的耗时操作期间,最好显示一个窗口,显示当前状态,例如“发送中...”、“加载中...”、“删除中...”等,如图所示

Using the Code
让我们看看如何实现它。 以下函数将创建两个叠加层以显示进度条。
参数
- progTit:进度窗口的标题。
- progText:进度窗口的文本内容,例如“发送中...”、“加载中...”、“删除中...”。
- progImg:要在框中显示的图像的路径。
$.showprogress = function(progTit, progText, progImg)
{
    $.hideprogress();
    $("BODY").append('<div id="processing_overlay"></div>');
    $("BODY").append(
      '<div id="processing_container">' +
        '<h1 id="processing_title">' + progTit + '</h1>' +
        '<div id="processing_content">' +
          '<div id="processing_message">'+ progText + 
                      '<br/><br/>' + progImg + '</div>' +
        '</div>' +
      '</div>');
     
    var pos = ($.browser.msie && parseInt($.browser.version) <= 6 ) ? 
               'absolute' : 'fixed'; 
    
    $("#processing_container").css({
        position: pos,
        zIndex: 99999,
        padding: 0,
        margin: 0
    });
        
    $("#processing_container").css({
        minWidth: $("#processing_container").outerWidth(),
        maxWidth: $("#processing_container").outerWidth()
    });
      
    var top = (($(window).height() / 2) - 
      ($("#processing_container").outerHeight() / 2)) + (-75);
    var left = (($(window).width() / 2) - 
      ($("#processing_container").outerWidth() / 2)) + 0;
    if( top < 0 ) top = 0;
    if( left < 0 ) left = 0;
    
    // IE6 fix
    if( $.browser.msie && parseInt($.browser.version) <= 6 ) top = 
        top + $(window).scrollTop();
    
    $("#processing_container").css({
        top: top + 'px',
        left: left + 'px'
    });
    $("#processing_overlay").height( $(document).height() );
}
为了隐藏进度框,我又添加了另一个函数,如下所示
$.hideprogress = function()
{
    $("#processing_container").remove();
    $("#processing_overlay").remove();
}
让我们以一个简单的留言板系统为例,使这个例子更清晰。
在留言系统中,您有不同的部分,例如收件箱、已发送、草稿等,当我们通过点击链接访问这些部分时,显示点击部分的内容需要一些时间。 在这段时间内,我们可以显示一个包含文本的框,例如“正在加载收件箱”,标题为“收件箱”。 请参阅以下代码
function fillinbox(){
     $.showprogress('Inbox','Loading.....','<img src="Images/loadingimage.gif"/>');
         $.post("controller/messagecontroller.aspx",{action:'inbox',page:'1'},
         function(ret){
          $("#divResult").html(ret);
         } 
       );
       $.hideprogress();
}
在上面的示例中,收件箱内容是从另一个页面加载的,获取该内容需要一些时间。 在这段时间内,进度条会显示“正在加载...”。
步骤
- 将jquery.js文件从附件文件夹中添加到您的页面中。
- 将msgwindow.js文件从附件文件夹中添加到您的页面中。
- 将 CSS 文件从附件文件夹中添加到您的页面中。
- 从附件文件夹中的“Image”文件夹中复制图像。
注意
- 您可以将一个单独的函数添加到您的页面中,或者您可以创建一个新的 JS 文件并将此函数放入其中。
- 如果您要从下载的代码中添加 JQuery JS 文件,请删除页面中已有的旧 JQuery JS 文件;否则,它将无法正常工作。
关注点
以前,我不知道我们可以将自己的函数添加到 JQuery 文件中。 我很惊讶我添加的函数工作得很好。 您可以将自己的函数/代码添加到任何 JQuery 文件中。


