使用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的日期选择控件
Oct 27 Javascript
分析Node.js connect ECONNREFUSED错误
Apr 09 Javascript
js 立即调用的函数表达式如何写
Jan 12 Javascript
Javascript闭包用法实例分析
Jan 23 Javascript
JavaScript阻止浏览器返回按钮的方法
Mar 18 Javascript
AngularJS 整理一些优化的小技巧
Aug 18 Javascript
JS转换HTML转义符的方法
Aug 24 Javascript
JavaScript简单验证表单空值及邮箱格式的方法
Jan 20 Javascript
js操作浏览器的参数方法
Jan 21 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
Jul 28 Javascript
vue操作动画的记录animate.css实例代码
Apr 26 Javascript
微信小程序 scroll-view 水平滚动实现过程解析
Oct 12 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 ss7.5的数据调用 (笔记)
2010/03/08 PHP
使用PHP实现蜘蛛访问日志统计
2013/07/05 PHP
Linux下PHP加速器APC的安装与配置笔记
2014/10/24 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
Laravel 错误提示本地化的实现
2019/10/22 PHP
jQuery获取文本节点之 text()/val()/html() 方法区别
2011/03/01 Javascript
深入剖析JavaScript中的枚举功能
2014/03/06 Javascript
js通过更改按钮的显示样式实现按钮的滑动效果
2014/04/23 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
浅谈js内置对象Math的属性和方法(推荐)
2016/09/19 Javascript
浅析Javascript中双等号(==)隐性转换机制
2017/10/27 Javascript
小程序清理本地缓存的方法
2018/08/17 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
2019/04/10 Javascript
Vue中的组件及路由使用实例代码详解
2019/05/22 Javascript
vue 中几种传值方法(3种)
2019/11/12 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
Vue中nprogress页面加载进度条的方法实现
2020/11/13 Javascript
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
python实现坦克大战游戏 附详细注释
2020/03/27 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
Python实现数字的格式化输出
2020/08/01 Python
python中count函数知识点浅析
2020/12/17 Python
python os.listdir()乱码解决方案
2021/01/31 Python
化工机械应届生求职信
2013/11/04 职场文书
专业销售业务员求职信
2013/11/18 职场文书
2014年端午节演讲稿范文
2014/05/23 职场文书
节约每一滴水演讲稿
2014/09/09 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
小学生作文评语集锦
2014/12/25 职场文书
手术室消毒隔离制度
2015/08/05 职场文书
交通安全学习心得体会
2016/01/18 职场文书
VUE递归树形实现多级列表
2022/07/15 Vue.js
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript