使用Javascript监控前端相关数据的代码


Posted in Javascript onOctober 27, 2016

本篇文章介绍了Javascript监控前端相关数据,项目开发完成外发后,没有一个监控系统,我们很难了解到发布出去的代码在用户机器上执行是否正确,所以需要建立前端代码性能相关的监控系统。

所以我们需要做以下的一些模块:

一、收集脚本执行错误

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

通过后台接口收集和统计,我们可以对页面执行性能有很详细的了解。

三、统计每个页面的JS和CSS加载时间

在JS或者CSS加载之前打上时间戳,加载之后打上时间戳,并且将数据上报到后台。加载时间反映了页面白屏,可操作的等待时间。

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支

Javascript 相关文章推荐
深入理解javaScript中的事件驱动
May 21 Javascript
javascript使用正则表达式实现去掉空格之后的字符
Feb 15 Javascript
浅谈js多维数组和hash数组定义和使用
Jul 27 Javascript
JS输出空格的简单实现方法
Sep 08 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
Feb 11 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
JS+html5制作简单音乐播放器
Sep 13 Javascript
vue.js的安装方法
May 12 Javascript
小程序实现搜索框
Jun 19 Javascript
使用apifm-wxapi快速开发小程序过程详解
Aug 05 Javascript
JavaScript数组排序的六种常见算法总结
Aug 18 Javascript
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
js实现各种复制到剪贴板的方法(分享)
Oct 27 #Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
Oct 27 #Javascript
微信小程序 定义全局数据、函数复用、模版等详细介绍
Oct 27 #Javascript
vue插件tab选项卡使用小结
Oct 27 #Javascript
JS实现用户注册时获取短信验证码和倒计时功能
Oct 27 #Javascript
微信小程序 action-sheet底部菜单详解
Oct 27 #Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
Oct 27 #Javascript
You might like
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
php调用新浪短链接API的方法
2014/11/08 PHP
JQuery操作表格(隔行着色,高亮显示,筛选数据)
2012/02/23 Javascript
中止javascript执行的方法
2014/02/14 Javascript
纯JavaScript实现获取onclick、onchange等事件的值
2014/12/29 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
js实现仿爱微网两级导航菜单效果代码
2015/08/31 Javascript
jQuery实现伪分页的方法分享
2016/02/17 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
2016/09/17 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
js遍历json的key和value的实例
2017/01/22 Javascript
vue服务端渲染缓存应用详解
2018/09/12 Javascript
基于Echarts图表在div动态切换时不显示的解决方式
2020/07/20 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
JavaScript canvas实现文字时钟
2021/01/10 Javascript
python 动态获取当前运行的类名和函数名的方法
2014/04/15 Python
python实现文法左递归的消除方法
2020/05/22 Python
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
C语言变量的命名规则都有哪些
2013/12/27 面试题
求职简历自荐信范文
2013/10/21 职场文书
国际会议邀请函范文
2014/01/16 职场文书
入党申请自荐书范文
2014/02/11 职场文书
单位委托书范本
2014/04/04 职场文书
产假请假条
2014/04/10 职场文书
英文求职信范文
2014/05/23 职场文书
教师廉洁自律承诺书
2014/05/26 职场文书
采购部长岗位职责
2014/06/13 职场文书
升学宴家长答谢词
2015/09/29 职场文书
python生成随机数、随机字符、随机字符串
2021/04/06 Python
有趣的二维码:使用MyQR和qrcode来制作二维码
2021/05/10 Python
Promise面试题详解之控制并发
2021/05/14 面试题
python中opencv实现图片文本倾斜校正
2021/06/11 Python
Python中requests库的用法详解
2022/06/05 Python