使用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 相关文章推荐
js原型链原理看图说明
Jul 07 Javascript
js 获取时间间隔实现代码
May 12 Javascript
jQuery创建DOM元素实例解析
Jan 19 Javascript
Jquery日期选择datepicker插件用法实例分析
Jun 08 Javascript
JS中用try catch对代码运行的性能影响分析
Dec 26 Javascript
基于JavaScript实现焦点图轮播效果
Mar 27 Javascript
JavaScript数据结构之单链表和循环链表
Nov 28 Javascript
修改node.js默认的npm安装目录实例
May 15 Javascript
vue安装遇到的5个报错及解决方法
Jun 12 Javascript
微信小程序实现定位及到指定位置导航的示例代码
Aug 20 Javascript
实例分析javascript中的异步
Jun 02 Javascript
AJAX实现省市县三级联动效果
Oct 16 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
老照片 - 几十年前的收音机与人
2021/03/02 无线电
PHP 5昨天隆重推出--PHP 5/Zend Engine 2.0新特性
2006/10/09 PHP
php REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
探讨fckeditor在Php中的配置详解
2013/06/08 PHP
php使用百度天气接口示例
2014/04/22 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
jQuery结合Json提交数据到Webservice,并接收从Webservice返回的Json数据
2011/02/18 Javascript
用html+css+js实现的一个简单的图片切换特效
2014/05/28 Javascript
js控制鼠标事件移动及移出效果显示
2014/10/19 Javascript
javascript常用函数(2)
2015/11/05 Javascript
jQuery焦点图轮播插件KinSlideshow用法分析
2016/06/08 Javascript
bootstrap中使用google prettify让代码高亮的方法
2016/10/21 Javascript
简单学习vue指令directive
2016/11/03 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
实例讲解JavaScript预编译流程
2019/01/24 Javascript
Node.js实现用户评论社区功能(体验前后端开发的乐趣)
2019/05/09 Javascript
layui--js控制switch的切换方法
2019/09/03 Javascript
vue项目在webpack2实现移动端字体自适配功能
2020/06/02 Javascript
[01:30]2016国际邀请赛中国区预选赛神秘商店火爆开启
2016/06/26 DOTA
python创建关联数组(字典)的方法
2015/05/04 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
python matplotlib imshow热图坐标替换/映射实例
2020/03/14 Python
amazeui时间组件的实现示例
2020/08/18 HTML / CSS
德国EGOIST网店:销售畅销的设计师品牌
2017/04/18 全球购物
C/C++程序员常见面试题二
2015/11/19 面试题
《天游峰的扫路人》教学反思
2014/04/25 职场文书
2014年护理工作总结范文
2014/11/14 职场文书
停电调休通知
2015/04/16 职场文书
2015年调度员工作总结
2015/04/30 职场文书