使用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 相关文章推荐
jQuery写的日历(包括日历的样式及功能)
Apr 23 Javascript
javascript右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
Jquery对select的增、删、改、查操作
Feb 06 Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
Dec 02 Javascript
微信小程序 免费SSL证书https、TLS版本问题的解决办法
Dec 14 Javascript
详解Vue生命周期的示例
Mar 10 Javascript
分析JavaScript数组操作难点
Dec 18 Javascript
Vue在页面右上角实现可悬浮/隐藏的系统菜单
May 04 Javascript
Angular如何在应用初始化时运行代码详解
Jun 11 Javascript
Vue自定义属性实例分析
Feb 23 Javascript
JS实现网站吸顶条
Jan 08 Javascript
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
php操作xml并将其插入数据库的实现方法
2016/09/08 PHP
php 静态属性和静态方法区别详解
2017/04/09 PHP
php连接MSsql server的五种方法总结
2018/03/04 PHP
PHPExcel实现表格导出功能示例【带有多个工作sheet】
2018/06/13 PHP
PHP实现用session来实现记录用户登陆信息
2018/10/15 PHP
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
jQuery EasyUI API 中文文档 - ComboBox组合框
2011/10/07 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
jQuery取消ajax请求的方法
2015/06/09 Javascript
一个超简单的jQuery回调函数例子(分享)
2016/08/08 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
微信小程序 swiper制作tab切换实现附源码
2017/01/21 Javascript
浅谈 Vue v-model指令的实现原理
2017/06/08 Javascript
node.js实现微信JS-API封装接口的示例代码
2017/09/06 Javascript
详解基于webpack&amp;gettext的前端多语言方案
2019/01/29 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
webgl实现物体描边效果的方法介绍
2019/11/27 Javascript
[36:05]完美世界DOTA2联赛循环赛 Forest vs DM 第一场 11.06
2020/11/06 DOTA
机器学习python实战之手写数字识别
2017/11/01 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
对python函数签名的方法详解
2019/01/22 Python
在python shell中运行python文件的实现
2019/12/21 Python
Python使用Selenium模拟浏览器自动操作功能
2020/09/08 Python
KIKO MILANO俄罗斯官网:意大利领先的化妆品和护肤品品牌
2021/01/09 全球购物
策划主管的工作职责
2013/11/24 职场文书
心得体会怎么写
2013/12/30 职场文书
学徒工职责
2014/03/06 职场文书
《音乐之都维也纳》教学反思
2014/04/16 职场文书
《小鹰学飞》教学反思
2014/04/23 职场文书
大学生村官座谈会发言材料
2014/05/25 职场文书
爱护公物标语
2014/06/24 职场文书
结婚堵门保证书
2015/05/08 职场文书
网聊搭讪开场白
2015/05/28 职场文书
创业计划书之美甲店
2019/09/20 职场文书
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript