使用Javascript监控前端相关数据,前端相关数据监控

前端相关数据监察和控制

2015/08/16 · HTML5 ·
多少监察和控制

初稿出处:
AlloyTeam   

项目费用完结外发后,没有二个监察系统,大家很难明白到公布出去的代码在用户机器上执行是还是不是正确,所以要求树立前端代码品质相关的监察系统。

因而我们须要做以下的一些模块:

壹 、收集脚本执行错误

JavaScript

function error(msg,url,line){ var REPORT_UPRADOL = “xxxx/cgi”; //
收集报告数据的音信 var m =[msg, url, line, navigator.userAgent, +new
Date];// 收集错误新闻,产生错误的剧本文件互联网地址,用户代理音信,时间
var url = REPO汉兰达T_U帕杰罗L + m.join(‘||’);// 组装错误反馈消息内容UCRUISERL var img
= new Image; img.onload = img.onerror = function(){ img = null; };
img.src = url;// 发送数据到后台cgi } // 监听错误上报 window.onerror =
function(msg,url,line){ error(msg,url,line); }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
function error(msg,url,line){
   var REPORT_URL = "xxxx/cgi"; // 收集上报数据的信息
   var m =[msg, url, line, navigator.userAgent, +new Date];// 收集错误信息,发生错误的脚本文件网络地址,用户代理信息,时间
   var url = REPORT_URL + m.join(‘||’);// 组装错误上报信息内容URL
   var img = new Image;
   img.onload = img.onerror = function(){
      img = null;
   };
   img.src = url;// 发送数据到后台cgi
}
// 监听错误上报
window.onerror = function(msg,url,line){
   error(msg,url,line);
}

经过管理后台系统,我们能够看来页面上每便错误的新闻,通过那个音讯大家得以神速定位同时化解难点。

二、收集html5 performance信息

performance
包蕴页面加载到实施到位的一体生命周期中不一样执行步骤的施行时间。performance相关小说点击如下:使用performance
API
监测页面质量

测算差异步骤时间相对于navigationStart的年华差,能够通过相应后台CGI收集。

JavaScript

使用Javascript监控前端相关数据,前端相关数据监控。function _performance(){ var REPORT_URL = “xxxx/cgi?perf=”; var perf =
(window.webkitPerformance ? window.webkitPerformance :
window.msPerformance ), points =
[‘navigationStart’,’unloadEventStart’,’unloadEventEnd’,’redirectStart’,’redirectEnd’,’fetchStart’,’domainLookupStart’,’connectStart’,’requestStart’,’responseStart’,’responseEnd’,’domLoading’,’domInteractive’,’domContentLoadedEventEnd’,’domComplete’,’loadEventStart’,’loadEventEnd’];
var timing = pref.timing; perf = perf ? perf : window.performance; if(
perf && timing ) { var arr = []; var navigationStart =
timing[points[0]]; for(var i=0,l=points.length;i<l;i++){ arr[i]
= timing[points[i]] – navigationStart; } var url = REPORT_URL +
arr.join(“-“); var img = new Image; img.onload = img.onerror =
function(){ img=null; } img.src = url; }

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function _performance(){
   var REPORT_URL = "xxxx/cgi?perf=";
   var perf = (window.webkitPerformance ? window.webkitPerformance : window.msPerformance ),
      points = [‘navigationStart’,’unloadEventStart’,’unloadEventEnd’,’redirectStart’,’redirectEnd’,’fetchStart’,’domainLookupStart’,’connectStart’,’requestStart’,’responseStart’,’responseEnd’,’domLoading’,’domInteractive’,’domContentLoadedEventEnd’,’domComplete’,’loadEventStart’,’loadEventEnd’];
   var timing = pref.timing;
   perf = perf  ? perf : window.performance;
   if( perf  && timing ) {
      var arr = [];
      var navigationStart = timing[points[0]];
      for(var i=0,l=points.length;i<l;i++){
         arr[i] = timing[points[i]] – navigationStart;
      }
   var url = REPORT_URL + arr.join("-");
   var img = new Image;
   img.onload = img.onerror = function(){
      img=null;
   }
   img.src = url;
}

因此后台接口收集和计算,我们能够对页面执行品质有很详细的刺探。

③ 、总括每种页面包车型客车JS和CSS加载时间

在JS也许CSS加载在此以前打上时间戳,加载之后打上时间戳,并且将数据报告到后台。加载时间反映了页面白屏,可操作的守候时间。

XHTML

<script>var cssLoadStart = +new Date</script> <link
rel=”stylesheet” href=”xxx.css” type=”text/css” media=”all”> <link
rel=”stylesheet” href=”xxx1.css” type=”text/css” media=”all”>
<link rel=”stylesheet” href=”xxx2.css” type=”text/css”
media=”all”> <sript> var cssLoadTime = (+new Date) –
cssLoadStart; var jsLoadStart = +new Date; </script> <script
type=”text/javascript” src=”xx1.js”></script> <script
type=”text/javascript” src=”xx2.js”></script> <script
type=”text/javascript” src=”xx3.js”></script> <script>
var jsLoadTime = (+new Date) – jsLoadStart; var REPORT_URL =
‘xxx/cgi?data=’ var img = new Image; img.onload = img.onerror =
function(){ img = null; }; img.src = REPORT_URL + cssLoadTime + ‘-‘ +
jsLoadTime; </script>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<script>var cssLoadStart = +new Date</script>
<link rel="stylesheet" href="xxx.css" type="text/css" media="all">
<link rel="stylesheet" href="xxx1.css" type="text/css" media="all">
<link rel="stylesheet" href="xxx2.css" type="text/css" media="all">
<sript>
   var cssLoadTime = (+new Date) – cssLoadStart;
   var jsLoadStart = +new Date;
</script>
<script type="text/javascript" src="xx1.js"></script>
<script type="text/javascript" src="xx2.js"></script>
<script type="text/javascript" src="xx3.js"></script>
<script>
   var jsLoadTime = (+new Date) – jsLoadStart;
   var REPORT_URL = ‘xxx/cgi?data=’
   var img = new Image;
   img.onload = img.onerror = function(){
      img = null;
   };
   img.src = REPORT_URL + cssLoadTime + ‘-‘ + jsLoadTime;
</script>

XHTML

<a href=””
target=”_blank”> </a>

1
<a href="https://github.com/perltzhu/js-data-report" target="_blank"> </a>

花色支出到位外发后,没有四个督察体系,大家很难通晓到公布出来的代码在用户机器上实行是不是科学,所以供给树立前端代码品质相关的监察系统。

本篇作品介绍了Javascript监察和控制前端相关数据,项目支付完结外发后,没有3个监察和控制体系,大家很难领会到公布出来的代码在用户机器上实施是不是科学,所以必要建立前端代码质量相关的监察系统。

前端错误可总结为三种档次,捕获格局如下:

1.即时运维错误(代码错误)

try{
  //代码
}catch(e){
  //错误信息
}

window.addEventListener('error', function(e){
     //错误信息
})

2.财富加载错误

onerror 事件
http://www.w3school.com.cn/jsref/event_onerror.asp

支持该事件的 HTML 标签:<img>, <object>, <style>
支持该事件的 JavaScript 对象:window, image

performance.getEntries()
https://developer.mozilla.org/en-US/docs/Web/API/Performance/getEntries

返回一个数组,显示该页面所有静态资源的Timing信息,每个数组成员就是一个PerformanceResourceTiming对象

window.addEventListener('error', function(e){
     //错误信息
}, true)

参考资料:

  • html5 performance
    en
  • html5 performance
    cn
  • javascript onerror
    api

    1 赞 1 收藏
    评论

图片 1

于是大家需求做以下的某些模块:

就此我们须要做以下的片段模块:

反映错误:

选用Image对象申报

(new Image()).src = "错误上报地址?err=错误信息"
//页面埋点通常也使用这种方式上报

应用ajax通信上报

//与ajax请求类似

壹 、收集脚本执行错误

function error(msg,url,line){
   var REPORT_URL = "xxxx/cgi"; // 收集上报数据的信息
   var m =[msg, url, line, navigator.userAgent, +new Date];// 收集错误信息,发生错误的脚本文件网络地址,用户代理信息,时间
   var url = REPORT_URL + m.join('||');// 组装错误上报信息内容URL
   var img = new Image;
   img.onload = img.onerror = function(){
      img = null;
   };
   img.src = url;// 发送数据到后台cgi
}
// 监听错误上报
window.onerror = function(msg,url,line){
   error(msg,url,line);
}

透过管制后台系统,大家能够观望页面上每一趟错误的音讯,通过那么些新闻大家能够急迅定位同时消除难点。

 

① 、收集脚本执行错误

二、收集html5 performance信息

performance
包涵页面加载到实施到位的全体生命周期中区别执行步骤的履行时间。performance相关文章点击如下:选用performance
API
监测页面品质

计量区别步骤时间相对于navigationStart的光阴差,能够透过相应后台CGI收集。

function _performance(){
   var REPORT_URL = "xxxx/cgi?perf=";
   var perf = (window.webkitPerformance ? window.webkitPerformance : window.msPerformance ),
      points = ['navigationStart','unloadEventStart','unloadEventEnd','redirectStart','redirectEnd','fetchStart','domainLookupStart','connectStart','requestStart','responseStart','responseEnd','domLoading','domInteractive','domContentLoadedEventEnd','domComplete','loadEventStart','loadEventEnd'];
   var timing = pref.timing;
   perf = perf  ? perf : window.performance;
   if( perf  && timing ) {
      var arr = [];
      var navigationStart = timing[points[0]];
      for(var i=0,l=points.length;i<l;i++){
         arr[i] = timing[points[i]] - navigationStart;
      }
   var url = REPORT_URL + arr.join("-");
   var img = new Image;
   img.onload = img.onerror = function(){
      img=null;
   }
   img.src = url;
}

经过后台接口收集和总计,我们能够对页面执行质量有很详细的垂询。

function error(msg,url,line){
  var REPORT_URL = "xxxx/cgi"; // 收集上报数据的信息
  var m =[msg, url, line, navigator.userAgent, +new Date];// 收集错误信息,发生错误的脚本文件网络地址,用户代理信息,时间
  var url = REPORT_URL + m.join('||');// 组装错误上报信息内容URL
  var img = new Image;
  img.onload = img.onerror = function(){
   img = null;
  };
  img.src = url;// 发送数据到后台cgi
}
// 监听错误上报
window.onerror = function(msg,url,line){
  error(msg,url,line);
}

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图