js其实是没法计算到网页的加载进度的。
目前见到的打开页面显示进度的有两种
1、如果是flash做的,那是flash自身的加载进度。
2、如果是js做的,做法比较简单,就是在页面的不同的地方插入script标签,动态改变进度的值。
<html><head>
<script>
var processPer = 0
window.onload = function(){
document.getElementById('process').innerHTML = processPer
}
</script>
</head>
<body>
<div id="process"></div>
<div></div>
....
<script>
processPer = 30
document.getElementById('process').innerHTML = processPer
</script>
<div></div>
....
<div></div>
....
<script>
processPer = 100
document.getElementById('process').innerHTML = processPer
</script>
</body>
</html>
类似这样的,就可以实现了进度的动态改变。
这个很难实现的,因为要想实现准确的进度条,就必须知道要下载的总字节数和当前已下载的字节数,总字节数除了html文件本身,还有里面的各种对象如图片、动画、css文件、js文件等的字节数,还要区分哪些是从电脑的cache取出的,哪些是从服务器下载的,有些数据要等到页面完全下载完毕才能得到,这马后炮有什么用呢。IE浏览器本身的进度条都无法做到准确呢,何况用JS?一般都是用个动态GIF图片或Falsh循环滚动一下糊弄糊弄用户就行了。我还没见过能精确计算出加载进度的网站,如果有,那我只能说他们糊弄的技术很牛B
ajax默认情况下是异步执行的(建议尽量异步),也就是说当发出ajax命令后,程序是不停顿的,如果这时候隐藏图片,那么就相当于没有显示了(浏览器可能来不及把图片显示出来就被你隐藏了)。所以,标准做法是在ajax的回调函数中进行图片的隐藏(建议用complete事件),比如:
var loading=document.getElementById("loading")loading.style.display="block" //尽量不要通过设为空白来显示图片,兼容性差
ajax({
//...其他参数略
success:...
fail:...
complete:function(){
loading.style.display="none" //在这里隐藏!
}
})
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)