web-dev-qa-db-ja.com

JavaScriptページの読み込み時間の計算で負の値が返される

<script type="text/javascript">//<![CDATA[
// jQuery has already been loaded but this could be equivalent to 
// a function in <body onLoad="">
$(function(){
  var iNavStart=performance.timing.navigationStart;
  var iNavEnd=performance.timing.loadEventEnd;
  var iPageLoad=iNavEnd-iNavStart;
  console.dir({'iNavStart',iNavStart});
  console.dir({'iNavEnd',iNavEnd});
  console.dir({'iPageLoad',iPageLoad});
});
//]]</script>

ページが読み込まれると、コンソールに次の情報が表示されます。

iNavStart: 1449594976150
iNavEnd:   0
iPageLoad: -1449594976150

この計算では、ニース単位のミリ秒が得られると予想していました。確かにiNavEndはであってはなりません

Chrome 47およびFirefox 42でテスト済み(両方ともperformance.timingをサポート)。

私が間違っているつもりはありますか?

2
richhallstoke

Ionut Popaこれに答える Stackoverflowで パフォーマンスAPIを使用してサイトのロード時間を測定する

Onloadイベントの終了後にloadEventEndを測定する必要があります。そうしないと、0として報告されます。 (onloadイベントにアタッチするjqueryの例)

$(window).load(function(){
 setTimeout(function(){
 window.performance = window.performance || window.mozPerformance || window.msPerformance || window.webkitPerformance || {};
 var timing = performance.timing || {};
 var parseTime = timing.loadEventEnd - timing.responseEnd;
 console.log('Parsetime: ', parseTime);
 }, 0);
});
2