web-dev-qa-db-fra.com

Le calcul du temps de chargement d'une page Javascript est négatif

<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>

Lorsque la page est chargée, la console révèle:

iNavStart: 1449594976150
iNavEnd:   0
iPageLoad: -1449594976150

Je m'attendais à ce que ce calcul me donne un beau nombre de millisecondes. Sûrement iNavEnd ne devrait pas être ?

Testé dans Chrome 47 et Firefox 42 (tous deux pris en charge performance.timing).

Des idées où je vais mal?

2
richhallstoke

Je crois que Ionut Poparépond à cela sur Stackoverflow in Mesure du temps de chargement du site via un API :

Vous devez mesurer loadEventEnd à la fin de l'événement onload, sinon il sera signalé comme 0, comme cela ne s'est jamais produit. (exemple de requête pour l'attachement à l'événement onload)

$(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