使用Javascript监控前端相关数据的代码

 更新时间:2016年10月27日 10:33:30   作者:chenpingzhao  
本篇文章详细的介绍了使用Javascript监控前端相关数据,可以及时的监控前端的错误,加载时间等,有需要的可以了解一下。

本篇文章介绍了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>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支

相关文章

  • 微信小程序实现红包雨功能

    微信小程序实现红包雨功能

    这篇文章主要为大家详细介绍了微信小程序实现红包雨功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • javascript事件冒泡和事件捕获详解

    javascript事件冒泡和事件捕获详解

    最近在学习javascript中遇到了一些困难,比如冒泡和捕获,很多次被提到,但又不知究竟应用在何处。找到了一些好文章解惑,在这里分享给大家。
    2015-05-05
  • 微信小程序实现自定义picker选择器弹窗内容

    微信小程序实现自定义picker选择器弹窗内容

    这篇文章主要为大家详细介绍了微信小程序实现自定义picker选择器弹窗内容,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 通用的加入收藏夹代码支持IE Firefox等浏览器

    通用的加入收藏夹代码支持IE Firefox等浏览器

    通用的加入收藏夹代码支持IE Firefox等浏览器...
    2007-06-06
  • 浅谈JS中几种轻松处理''this''指向方式

    浅谈JS中几种轻松处理''this''指向方式

    这篇文章主要介绍了浅谈JS中几种轻松处理'this'指向方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • JavaScript事件学习小结(一)事件流

    JavaScript事件学习小结(一)事件流

    这篇文章主要介绍了JavaScript事件学习小结(一)事件流的相关资料,需要的朋友可以参考下
    2016-06-06
  • JavaScript一文带你玩转web表单网页

    JavaScript一文带你玩转web表单网页

    表单通常用来收集网页访问者信息,常见的表单比如搜索引擎的搜索框、各网页应用的注册或者登陆界面等,通读本篇对大家的学习或工作具有一定的价值,需要的朋友可以参考下
    2021-10-10
  • 使用SVG基本操作API的实例讲解

    使用SVG基本操作API的实例讲解

    下面小编就为大家带来一篇使用SVG基本操作API的实例讲解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-09-09
  • JS二进制流文件下载导出(接口返回二进制流)乱码处理方法

    JS二进制流文件下载导出(接口返回二进制流)乱码处理方法

    这篇文章主要介绍了JS二进制流文件下载导出(接口返回二进制流)乱码处理方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2023-12-12
  • js全选按钮的实现方法

    js全选按钮的实现方法

    在我们进行项目选择时,会出现选择多个项目或者是项目实现全选,这样的功能如何实现呐,本文给出了js实现checkbox全选的详细代码,希望大家喜欢。
    2015-11-11

最新评论