为了账号安全,请及时绑定邮箱和手机立即绑定

在JavaScript中计算页面加载时间

在JavaScript中计算页面加载时间

我正在尝试制作一个网页,当它开始加载时,使用间隔来启动计时器。页面完全加载后,它将停止计时器,但是即使有更长的时间,我仍然有99%的时间获得0.00或0.01的时间测量值。有时候,它说的东西有时更有意义,例如.28或3.10。如果有帮助,请参见以下代码:var hundredthstimer = 0;var secondplace = 0;function addinc(){    hundredthstimer += 1;    if (inctimer == 100){        hundredthstimer = 0;        secondplace += 1;    }}var clockint = setInterval(addinc, 10);function init(){    var bconv1 = document.getElementById("bconverter1");    var bconv2 = document.getElementById("bconverter2");    $(bconv2).hide();    clearInterval(clockint);    if (inctimer.len !== 2){        inctimer = "0" + inctimer;    }    alert(secondplace + "." + inctimer);}onload = init;因此,它基本上会创建一个称为百分百的变量,该变量每10毫秒(.01秒)增加1。然后,如果该数字达到1000(1整秒),则称为secondsplace的变量将增加1,因为它已运行了整整秒数。然后,它警告秒位,小数点和百分之一百位作为总加载时间。但是上面的数字错误问题仍然存在。为什么?
查看完整描述

3 回答

?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

永远不要使用setInterval或setTimeout功能进行时间测量!它们不可靠,并且很可能在文档解析和显示期间延迟JS执行计划。


相反,在页面开始加载时,使用该Date对象创建时间戳记,并计算页面完全加载时的时间差:


<doctype html>

<html>

    <head>

        <script type="text/javascript">

            var timerStart = Date.now();

        </script>

        <!-- do all the stuff you need to do -->

    </head>

    <body>

        <!-- put everything you need in here -->


        <script type="text/javascript">

             $(document).ready(function() {

                 console.log("Time until DOMready: ", Date.now()-timerStart);

             });

             $(window).load(function() {

                 console.log("Time until everything loaded: ", Date.now()-timerStart);

             });

        </script>

    </body>

</html>


查看完整回答
反对 回复 2019-10-15
?
皈依舞

TA贡献1851条经验 获得超3个赞

为什么这么复杂?何时可以:


var loadTime = window.performance.timing.domContentLoadedEventEnd- window.performance.timing.navigationStart;

如果需要更多时间,请查看window.performance对象:


console.log(window.performance);

将向您显示计时对象:


connectEnd                 Time when server connection is finished.

connectStart               Time just before server connection begins.

domComplete                Time just before document readiness completes.

domContentLoadedEventEnd   Time after DOMContentLoaded event completes.

domContentLoadedEventStart Time just before DOMContentLoaded starts.

domInteractive             Time just before readiness set to interactive.

domLoading                 Time just before readiness set to loading.

domainLookupEnd            Time after domain name lookup.

domainLookupStart          Time just before domain name lookup.

fetchStart                 Time when the resource starts being fetched.

loadEventEnd               Time when the load event is complete.

loadEventStart             Time just before the load event is fired.

navigationStart            Time after the previous document begins unload.

redirectCount              Number of redirects since the last non-redirect.

redirectEnd                Time after last redirect response ends.

redirectStart              Time of fetch that initiated a redirect.

requestStart               Time just before a server request.

responseEnd                Time after the end of a response or connection.

responseStart              Time just before the start of a response.

timing                     Reference to a performance timing object.

navigation                 Reference to performance navigation object.

performance                Reference to performance object for a window.

type                       Type of the last non-redirect navigation event.

unloadEventEnd             Time after the previous document is unloaded.

unloadEventStart           Time just before the unload event is fired.


查看完整回答
反对 回复 2019-10-15
  • 3 回答
  • 0 关注
  • 1838 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信