Skip to content

Instantly share code, notes, and snippets.

@zoffyzhang
Created April 13, 2018 12:25
Show Gist options
  • Save zoffyzhang/5b57fa302131466373963c3cab98eb07 to your computer and use it in GitHub Desktop.
Save zoffyzhang/5b57fa302131466373963c3cab98eb07 to your computer and use it in GitHub Desktop.
(function() {
handleAddListener('load', getTiming)
function handleAddListener(type, fn){
if(window.addEventListener){
window.addEventListener(type, fn)
}else{
window.attachEvent('on' + type, fn)
}
}
function getTiming () {
try {
var time = performance.timing;
var timingObj = {};
var loadTime = (time.loadEventEnd - time.loadEventStart) / 1000;
if (loadTime < 0) {
setTimeout(function() {
getTiming();
}, 200);
return;
}
timingObj['重定向时间'] = (time.redirectEnd - time.redirectStart) / 1000;
timingObj['DNS 解析时间'] = (time.domainLookupEnd - time.domainLookupStart) / 1000;
timingObj['TCP 完成握手时间'] = (time.connectEnd - time.connectStart) / 1000;
timingObj['HTTP 请求响应完成时间'] = (time.responseEnd - time.requestStart) / 1000;
timingObj['DOM 开始加载前所花费时间'] = (time.responseEnd - time.navigationStart) / 1000;
timingObj['DOM 加载完成时间'] = (time.domComplete - time.domLoading) / 1000;
timingObj['DOM 结构解析完成时间'] = (time.domInteractive - time.domLoading) / 1000;
timingObj['脚本加载时间'] = (time.domContentLoadedEventEnd - time.domContentLoadedEventStart) / 1000;
timingObj['onload 事件时间'] = (time.loadEventEnd - time.loadEventStart) / 1000;
timingObj['页面完全加载时间'] = (timingObj['重定向时间'] + timingObj['DNS 解析时间'] + timingObj['TCP 完成握手时间'] + timingObj['HTTP 请求响应完成时间'] + timingObj['DOM 结构解析完成时间'] + timingObj['DOM 加载完成时间']);
for (item in timingObj) {
console.log(item + ":" + timingObj[item] + '毫秒');
}
console.log(performance.timing);
} catch (e) {
console.log(timingObj)
console.log(performance.timing);
}
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment