使用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弹出窗口插件 LeanModal的使用方法
Mar 10 Javascript
JavaScript事件处理器中的event参数使用介绍
May 24 Javascript
chrome浏览器不支持onmouseleave事件的解决技巧
May 31 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
Aug 01 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
JavaScript学习笔记之创建对象
Mar 25 Javascript
不得不看之JavaScript构造函数及new运算符
Aug 21 Javascript
AngularJs用户输入动态模板XSS攻击示例详解
Apr 21 Javascript
小程序云开发如何实现图片上传及发表文字
May 17 Javascript
JS中async/await实现异步调用的方法
Aug 28 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
Sep 18 Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 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
实用函数7
2007/11/08 PHP
PHP针对JSON操作实例分析
2015/01/12 PHP
php实现根据IP地址获取其所在省市的方法
2015/04/30 PHP
完整显示当前日期和时间的JS代码
2007/09/17 Javascript
JavaScript Event学习第八章 事件的顺序
2010/02/07 Javascript
几个有趣的Javascript Hack
2010/07/24 Javascript
jquery trim() 功能源代码
2011/02/14 Javascript
12种不宜使用的Javascript语法整理
2013/11/04 Javascript
Jquery中扩展方法extend使用技巧
2014/08/24 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
JavaScript实现动态添加,删除行的方法实例详解
2015/07/02 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
2016/05/28 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
Vue2.0实现组件数据的双向绑定问题
2018/03/06 Javascript
[02:38]DOTA2超级联赛专访Loda 认为IG世界最强
2013/05/27 DOTA
Python下使用Psyco模块优化运行速度
2015/04/05 Python
python执行等待程序直到第二天零点的方法
2015/04/23 Python
讲解Python中运算符使用时的优先级
2015/05/14 Python
Python中条件判断语句的简单使用方法
2015/08/21 Python
Python3实现统计单词表中每个字母出现频率的方法示例
2019/01/28 Python
python tkinter组件使用详解
2019/09/16 Python
阿迪达斯芬兰官方网站:adidas芬兰
2017/01/30 全球购物
粉红色的鲸鱼:Vineyard Vines
2018/02/17 全球购物
法国在线药房:DoctiPharma
2020/10/21 全球购物
高中化学教学反思
2014/01/13 职场文书
小学生元旦感言
2014/02/26 职场文书
洗发水广告词
2014/03/13 职场文书
三项教育活动实施方案
2014/03/30 职场文书
一年级小学生评语
2014/04/22 职场文书
抽样调查项目计划书
2014/04/24 职场文书
文明礼仪倡议书
2015/04/28 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
关于JavaScript 中 if包含逗号表达式
2021/11/27 Javascript
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技