使用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 各浏览器的 Javascript 效率对比
Jan 23 Javascript
js onload处理html页面加载之后的事件
Oct 30 Javascript
通过js为元素添加多项样式,浏览器全兼容写法
Aug 30 Javascript
JavaScript中扩展Array contains方法实例
Aug 23 Javascript
jQuery中extend()和fn.extend()方法详解
Jun 03 Javascript
学习JavaScript设计模式之装饰者模式
Jan 19 Javascript
详解Angularjs中的依赖注入
Mar 11 Javascript
JavaScript知识点总结(十)之this关键字
May 31 Javascript
js 自带的sort() 方法全面了解
Aug 16 Javascript
jQuery搜索框效果实现代码(百度关键词联想)
Feb 25 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
Aug 01 Javascript
vue滑动吸顶及锚点定位的示例代码
May 10 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
一个用mysql_odbc和php写的serach数据库程序
2006/10/09 PHP
function.inc.php超越php
2006/12/09 PHP
PHP语法速查表
2007/01/02 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
jQuery表单验证插件formValidator(改进版)
2012/02/03 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
jQuery中dequeue()方法用法实例
2014/12/29 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
jQuery获取checkboxlist的value值的方法
2015/09/27 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
微信小程序 Page()函数详解
2016/10/17 Javascript
Vue.js实现网格列表布局转换方法
2017/08/25 Javascript
详解使用Visual Studio Code对Node.js进行断点调试
2017/09/14 Javascript
python mysqldb连接数据库
2009/03/16 Python
跟老齐学Python之复习if语句
2014/10/02 Python
用python 制作图片转pdf工具
2015/01/30 Python
python实现同时给多个变量赋值的方法
2015/04/30 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
python安装教程 Pycharm安装详细教程
2017/05/02 Python
使用Django Form解决表单数据无法动态刷新的两种方法
2017/07/14 Python
python获取多线程及子线程的返回值
2017/11/15 Python
Pycharm远程调试openstack的方法
2017/11/21 Python
从请求到响应过程中django都做了哪些处理
2018/08/01 Python
python样条插值的实现代码
2018/12/17 Python
解决tensorboard多个events文件显示紊乱的问题
2020/02/15 Python
英国最大的网上药品商店:Chemist Direct
2017/12/16 全球购物
Origins悦木之源香港官网:雅诗兰黛集团高端植物护肤品牌
2018/03/21 全球购物
Wojas罗马尼亚网站:波兰皮鞋品牌
2018/11/01 全球购物
简历中个人求职的自我评价模板
2013/11/29 职场文书
优秀研究生自我鉴定
2013/12/04 职场文书
高中生期末评语
2014/01/28 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
冬季安全检查方案
2014/05/23 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
2014年党支部工作总结
2014/11/13 职场文书
收入证明申请书
2015/06/12 职场文书