JS做的进度条,如何做的?

JS做的进度条,如何做的?,第1张

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"   //在这里隐藏!

    }

})


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11826760.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-19
下一篇 2023-05-19

发表评论

登录后才能评论

评论列表(0条)

保存