I have a basic page with a navigation bar on top, and a wrapper body.
Whenever a user clicks on a navigation link it uses .load
to load the page content into the wrapper div.
$(this).ajaxStart(function(){$('.progressbar .bar').css('width','5%');$('.progressbar').fadeIn();});
$(this).ajaxEnd(function(){$('progressbar').hide();});
$('.ajaxspl').on('click',function(e){
e.preventDefault();
var url=$(this).data('url'),
wrap=$('body #wrap');
//clean the wrapper
wrap.slideUp().html('');
//load page into wrapper
wrap.load(url,function(){wrap.slideDown();});
});
Example of return value from .load
:
<div>
...content
</div>
<script>$('.progressbar .bar').css('width','30%');</script>
<link href="/assets/css/datepicker.css" rel="stylesheet" />
<script>$('.progressbar .bar').css('width','60%');</script>
<link href="/assets/css/main.css" rel="stylesheet" />
<script>$('.progressbar .bar').css('width','90%');</script>
<script>//blah blah</script>
As you can see, I have a Bootstrap progress bar that I show on ajaxstart()
, and on the page that I call I modify that value of the progress bar after each item is loaded.
This works nicely on Firefox and I can see the progress bar while waiting for the page to load, but it does not work on Chrome or IE.
Is there a better way to do this? Am I doing this correctly or is there another method to do this?
For example, getting $.ajax
page size in kb and update progress bar on the fly as data is received?
I am trying to produce something similar to the Loading page when Gmail is loading.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…