进度条应显示在屏幕上,直到网页完全加载

时间:2013-04-10 06:22:48

标签: jquery load progress-bar page-load-time

我使用波纹管代码显示进度条。

jQuery('#container').showLoading(
{
      'afterShow':
       function () 
       {
          setTimeout("jQuery('#container').hideLoading()", 1000);
       }
});

进度条在屏幕上显示,直到1000毫秒,然后消失。 但我希望屏幕上显示进度条直到(time) = page load。 静态意味着我需要1000毫秒,但我希望进度条显示很长时间......页面需要时间来加载。

那么如何获取页面加载时间并将其传递到这里?

2 个答案:

答案 0 :(得分:2)

我们需要做的是首先显示进度指示器,然后在页面完全加载时隐藏它。我们可以通过在DOM准备就绪时将load事件绑定到window对象来实现这一点。

请注意:在这么小的页面上,您可能不会注意到加载程序,因为它会发生得太快。

jQuery(document).ready(function() {

  showHideLoading(); // load this func as soon as the doc is ready

});

function showHideLoading() {

  // We'll be referencing #loader more than once so let's cache it
  var loader = jQuery("#loader");

  // now we'll show the #loader
  loader.show();

  // We'll set up a new event so that when everything on the page
  // has finished loading, we hide our #loader
  jQuery(window).on("load", function() {
    loader.fadeOut(500);
  });
}
body {
  margin: 0;
  }
img {
  max-width: 100%;
  /*this is only here to make the page load a little more slowly */
}
#loader {
  position: absolute;
  left: 0;
  right: 0;
  top: 0;
  bottom: 0;
  background: rgba(0, 0, 0, 0.5);

}
#loader div {
  width: 150px;
  height: 80px;
  margin: -40px 0 0 -75px;
  background: #fff;
    position: absolute;
  top: 50%;
  left: 50%;
  text-align: center;
  border-radius: 50%;
  line-height: 80px;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<!-- this is only here to make the page load a little more slowly -->
<img src="http://lorempixel.com/image_output/cats-q-c-1920-1080-8.jpg" />


<div id="loader">

  <div>Loading</div>

</div>

答案 1 :(得分:0)

您不会获得页面加载时间,但是您可以绑定到window.onload事件以隐藏进度条。只有在页面完全加载时才会触发window.onload事件。

        window.onload = function() {
            jQuery('#container').hideLoading();
        };