js代码错误监控代码

window.onerror = function(msg,url,line,col,error){
    //没有URL不上报!上报也不知道错误
    if (msg != "Script error." && !url){
        return true;
    }
    //采用异步的方式
    //我遇到过在window.onunload进行ajax的堵塞上报
    //由于客户端强制关闭webview导致这次堵塞上报有Network Error
    //我猜测这里window.onerror的执行流在关闭前是必然执行的
    //而离开文章之后的上报对于业务来说是可丢失的
    //所以我把这里的执行流放到异步事件去执行
    //脚本的异常数降低了10倍
    setTimeout(function(){
        var data = {};
        //不一定所有浏览器都支持col参数
        col = col || (window.event && window.event.errorCharacter) || 0;
 
        data.url = url;
        data.line = line;
        data.col = col;
        if (!!error && !!error.stack){
            //如果浏览器有堆栈信息
            //直接使用
            data.msg = error.stack.toString();
        }else if (!!arguments.callee){
            //尝试通过callee拿堆栈信息
            var ext = [];
            var f = arguments.callee.caller, c = 3;
            //这里只拿三层堆栈信息
            while (f && (--c>0)) {
               ext.push(f.toString());
               if (f  === f.caller) {
                    break;//如果有环
               }
               f = f.caller;
            }
            ext = ext.join(",");
            data.msg = ext;
        }
        //把data上报到后台!
    },0);
 
    return true;
};
时间: 2024-09-30 04:29:34

js代码错误监控代码的相关文章

前端代码异常监控总结

[这个在去年8月就起稿了,一直没有发布....] 一.前言 说到前端监控大家应该都不会陌生,这是现代前端工程的标配之一.引入前端监控系统,可以使用例如fundebug,Sentry等第三方监控神器,当然你完全可以自己定制一套符合实际情况的监控模型.一个监控系统大致可以分为四个阶段:日志采集.日志存储.统计与分析.报告和警告.下面主要从几个方面谈谈我对前端代码异常监控的一些理解. 二.JS异处理 脚本错误一般分为两种:语法错误,运行时错误.常见的处理方式有: 2.1 try..catch 捕获 用

JS弹出窗口代码大全(详细整理)

1.弹启一个全屏窗口 复制代码代码如下: <html> <body http://www.jb51.net','脚本之家','fullscreen');">; <b>www.jb51.net</b> </body> </html> 2.弹启一个被F11化后的窗口 复制代码代码如下: <html> <body 'http://www.jb51.net','脚本之家','channelmode');"

js动态生成css代码

用js动态生成css代码 有时候我们需要利用js来动态生成页面上style标签中的css代码,方法很直接,就是直接创建一个style元素,然后设置style元素里面的css代码,最后把它插入到head元素中.但有些兼容性问题我们需要解决.首先在符合w3c标准的浏览器中我们只需要把要插入的css代码作为一个文本节点插入到style元素中即可,而在IE中则需要利用style元素的styleSheet.cssText来解决.还需要注意的就是在有些版本IE中一个页面上style标签数量是有限制的,如果超

Fundebug上线Node.js错误监控啦

作为全栈JavaScript错误实时监测平台,Fundebug的Node.js实时错误监测服务上线啦,我们能够帮助开发者及时,高效地发现并且解决Node.js错误,从而提高开发效率,并提升用户体验. Fundebug为什么监测Node.js? 程序员通常是比较自信的,他们坚持自己写的代码没有问题.然而,再追问一下自己: 我的代码真的100%没有问题吗? 我做了完整的单元测试吗? 难道我要花更多的时间没完没了的写单元测试? 那么问题在哪? 当Node.js后台程序在服务器上出错了,然而开发者并不知

js css样式操作代码(批量操作)

js css样式操作代码(批量操作) 作者: 字体:[增加 减小] 类型:转载 时间:2009-10-09 用js控制css样式,能让网页达到良好的的用户体验甚至是动画的效果.并且考虑到效率. 我们用js书写css样式通常会用下面的两种方式: 一般情况下我们用js设置元素对象的样式会使用这样的形式: 复制代码 代码如下: var element= document.getElementById(”id”); element.style.width=”20px”; element.style.he

使用Underscore.js的template将Backbone.js的js代码和html代码分离

这段时间在学习Require.js和Backbone.js的过程中,发现有些项目里的HTML代码都是写在View的js代码里面的,渲染的时候需要对Collection进行循环,再将HTML代码拼接上去,这似乎不是一件非常好的事情,因为将js代码和html代码融合到一起会增加代码的维护难度,而且这个过程中考虑到性能的因素,需要将HTML代码放到一个数组中,最后进行拼接,代码写起来比较麻烦.我看到他们的代码之后就在考虑是否有一种类似php模板引擎的东西可以将Collection传递进去然后渲染. 我

js实现一套代码来控制所有的运动,图片的淡入淡出,winth,height的变宽

介绍了那么多运动,這次一套代码实现所有运动 1.html代码和css代码,只是定义一个div 1 <style> 2 div{ 3 width:200px; 4 height:200px; 5 margin:20px; 6 float:left; 7 background:yellow; 8 border:10px solid black; 9 filter:alpha(opacity:30); 10 opacity:0.3; 11 } 12 </style> 13 <bod

js格式化数字实例代码

js格式化数字实例代码:数字往往需要进行一定的格式化,一来是便于阅读,二来是实际需要,比如钱数就常常按千位逗号分隔,下面就是一个这样的函数能够是此功能,并且能够保留指定书目的小数,且自动实现四舍五入效果.代码实例如下: function fmoney(s,n) { n=n>0&&n<=20?n:2; s=parseFloat((s+"").replace(/[^\d\.-]/g,"")).toFixed(n)+"";

原生js阻止事件冒泡代码实例

原生js阻止事件冒泡代码实例:关于什么是事件冒泡这里就不多介绍了,可以参阅javascript事件冒泡简单介绍一章节,任何现象都是双刃剑,有时候利用事件冒泡能够带来便利性,但是有时候也会带来不便,下面就通过带来实例介绍一下如何阻止事件冒泡现象.代码实例如下: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="author" conte