{"version":3,"sources":["webpack:///webpack/bootstrap 6039463c109a8d6eacf2","webpack:///./src/config.js","webpack:///./src/utils.js","webpack:///./src/xlog.js","webpack:///./src/logger/jsErrorLogger.js","webpack:///./src/logger/resLogger.js","webpack:///./src/logger/performanceLogger.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","config","version","pre","debugMode","isDevelop","err_i","sample","remoteUrl","qsIgnore","Array","domainIgnore","domainWhitelist","maxRep","trapErrors","logToConsole","ignoreCrossOriginErrors","guid","res_duration","page_load_slow_time","init","this","length","ilen","toLowerCase","window","location","href","indexOf","utils","waitForRequests","generateGuid","replace","ch","digit","Math","random","toString","toUpperCase","parseURL","url","locn","urlParts","split","protocol","host","hostname","port","splice","pathname","join","hash","search","matchDomains","loc","domains","RegExp","test","stripQueries","ignoreArr","queries","$0","$1","$2","$3","key","requestRemote","paramObj","encodeURIComponent","uidal","getCookie","uid","substr","paramStr","objToStr","src","appendImg","index","data","img","Image","onload","onerror","launchFakeImg","domObj","getAttribute","setAttribute","document","body","appendChild","onDomReady","cb","ie","attachEvent","opera","addEventListener","documentElement","doScroll","err","setTimeout","checkWait","shift","errorHandler","source","error","logger","message","console","log","addEventHandler","oTarget","sEventType","fnHandler","useCapture","removeEventHandler","removeEventListener","detachEvent","nodeXmlToStr","mapObj","arr","len","obj","value","push","nodeXmlToObject","k","encode","reg","cookie","match","decodeURIComponent","getQueryString","r","getSelfUrl","myName","scripts","getElementsByTagName","willHandle","msg","isIE","userAgent","navigator","isOpera","jsErrorLogger","resLogger","performanceLogger","xlog","launch","NamedNodeMap","event","handleError","selfUrl","type","say","file_loc","line_no","col_no","stack","URL","param","res_url","ln","cn","xt","e","sendError","target","lineno","colno","filename","ErrorEvent","fnPreviousOnErrorHandler","resErrorLogger","resHash","logResource","resources","performance","getEntriesByType","resource","jsonObj","resource_hash","start_time","startTime","toFixed","duration","tag","initiatorType","attributes","currentSrc","attrObj","nodeName","sendPerformance","timing","toJSON","dnsTime","domainLookupEnd","domainLookupStart","tcpTime","connectEnd","connectStart","whiteTime","responseStart","navigationStart","domTime","domContentLoadedEventEnd","loadTime","loadEventEnd","readyTime","fetchStart","redirectTime","redirectEnd","redirectStart","unloadTime","unloadEventEnd","unloadEventStart","requestTime","responseEnd","requestStart","analysisDomTime","domCompvare","domInteractive","xlog_performance"],"mappings":"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","file":"xlog.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 2);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 6039463c109a8d6eacf2","//https://github.com/Offbeatmammal/jsErrLog\r\nvar config = {\r\n //js版本号\r\n version:\"0.0.3\",\r\n // 避免冲突加的前缀\r\n pre:\"xlog\",\r\n // 开启后,不会发服务器,只会打印在控制台\r\n debugMode:false,\r\n // 环境\r\n isDevelop:false,\r\n // 报错计数\r\n err_i : 0,\r\n // 默认取样频率\r\n sample: 1,\r\n // 日志服务器地址\r\n //remoteUrl : \"http://jserrlog.appspot.com/logger.js\",\r\n remoteUrl:\"//gubajslog.eastmoney.com/xlog.gif\",\r\n // 页面url的get参数里需要忽略并不上报服务器的参数,这里的参数是指key-value对中的key\r\n qsIgnore : new Array(),\r\n // 黑名单,忽略的域名(域名是指报错js资源地址的域名)\r\n domainIgnore : new Array(),\r\n // 白名单,只处理的域名(域名是指报错js资源地址的域名)\r\n domainWhitelist : new Array(),\r\n // 每个页面报错上报的总条数(jsErrorLogger用)\r\n maxRep : 50,\r\n // 是否返回告诉浏览器是否调用浏览器原生处理错误(去报红)\r\n trapErrors : false,\r\n // 浏览器控制台打印\r\n logToConsole : false,\r\n // 跨域类报错\r\n ignoreCrossOriginErrors : false,\r\n // 每个页面生成一个UUID(可自定义)\r\n guid : \"\",\r\n // res记录的duration阈值\r\n res_duration : 1000,\r\n // 页面onload值记录阈值\r\n page_load_slow_time : 5000,\r\n\r\n //初始化\r\n init:function(){\r\n if (this.qsIgnore.length > 0) {\r\n // 都先转成小写\r\n for (var i=0,ilen=this.qsIgnore.length; i=0){\r\n this.isDevelop=true\r\n }\r\n }\r\n}\r\n\r\nmodule.exports = config;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/config.js\n// module id = 0\n// module chunks = 0 1 2","var config = require(\"./config\");\r\n\r\nvar utils = {}\r\nutils.waitForRequests=[];\r\n\r\nutils.generateGuid = function() {\r\n return 'abababab_abab_4aba_baba_abababababab'.replace(/[ab]/g, function(ch) {\r\n var digit = Math.random()*16|0, newch = ch == 'a' ? digit : (digit&0x3|0x8);\r\n return newch.toString(16);\r\n }).toUpperCase();\r\n};\r\n// 整理出url中host,protocol,pathname,search等信息\r\nutils.parseURL = function(url) {\r\n\r\n //原地址保存一下\r\n var locn = { 'href' : url };\r\n\r\n //分割地址\r\n var urlParts = url.replace('//', '/').split('/');\r\n\r\n //协议\r\n locn.protocol = urlParts[0];\r\n\r\n if (urlParts.length > 1 ) {\r\n\r\n locn.host = urlParts[1];\r\n\r\n //extract port number from the host\r\n urlParts[1] = urlParts[1].split(':');\r\n locn.hostname = urlParts[1][0];\r\n locn.port = urlParts[1].length > 1 ? urlParts[1][1] : '';\r\n\r\n //splice and join the remainder to get the pathname\r\n urlParts.splice(0, 2);\r\n locn.pathname = '/' + urlParts.join('/');\r\n\r\n //extract hash\r\n locn.pathname = locn.pathname.split('#');\r\n locn.hash = locn.pathname.length > 1 ? '#' + locn.pathname[1] : '';\r\n locn.pathname = locn.pathname[0];\r\n\r\n // extract search query\r\n locn.pathname = locn.pathname.split('?');\r\n locn.search = locn.pathname.length > 1 ? '?' + locn.pathname[1] : '';\r\n locn.pathname = locn.pathname[0];\r\n\r\n }\r\n\r\n return locn;\r\n}\r\n\r\nutils.matchDomains = function( loc, domains ) {\r\n return (new RegExp( \"(\" + domains.join('|').replace(/\\./g,'\\\\.').replace(/\\*/g,'\\\\w+') + \")\" )).test( loc );\r\n}\r\n\r\n/**\r\n * 按照ignoreArr中的过滤url中get参数的key\r\n * @param {[type]} loc [description]\r\n * @param {[type]} ignoreArr [description]\r\n * @return {[type]} [description]\r\n */\r\nutils.stripQueries = function( loc,ignoreArr ) {\r\n var queries = {};\r\n // Use the String::replace method to iterate over each\r\n // name-value pair in the query string.\r\n loc.search.replace(\r\n new RegExp( \"([^?=&]+)(=([^&]*))?\", \"g\" ),\r\n // For each matched query string pair, add that\r\n // pair to the URL struct using the pre-equals\r\n // value as the key.\r\n function( $0, $1, $2, $3 ){\r\n // Only if the key is NOT in the ignore list should we pick it up\r\n if (ignoreArr.indexOf($1.toLowerCase()) == -1) {\r\n queries[ $1 ] = $3;\r\n }\r\n }\r\n );\r\n\r\n var search = \"\";\r\n for (var key in queries) {\r\n search += ( search.length === 0 ? \"?\" : \"&\" ) + key + \"=\" + queries[key];\r\n };\r\n\r\n // Rebuild the url\r\n return ( loc.protocol + loc.host + loc.pathname )\r\n + ( loc.search != (\"\") ? search : \"\" )\r\n + ( loc.hash != (\"\") ? loc.hash : \"\" );\r\n}\r\n\r\nutils.requestRemote = function(paramObj){\r\n var i = ++config.err_i;\r\n if(!config.guid){\r\n config.guid = utils.generateGuid();\r\n }\r\n var guid = config.guid;\r\n var url = encodeURIComponent(window.location.href);\r\n var uidal = utils.getCookie(\"uidal\");\r\n var uid = \"\";\r\n if(uidal){\r\n uid = uidal.substr(0,16);\r\n }else{\r\n uid = '';\r\n }\r\n paramObj['guid']=guid;//每次页面运行统一ID\r\n paramObj['url']=url;//当前url\r\n paramObj['i']=i;//日志请求计数\r\n paramObj['jv']=config.version;//日志js版本\r\n paramObj['uid']=uid;//用户uid\r\n paramObj['mt']=Math.random();//请求随机数\r\n // paramObj['purl']=document.referrer&&document.referrer!==location.href?document.referrer:''//来源页\r\n //config.remoteUrl;\r\n var paramStr = utils.objToStr(paramObj);\r\n var src = config.remoteUrl+\"?\"+paramStr;\r\n utils.appendImg(i,src);\r\n}\r\n\r\nutils.appendImg = function(index,src){\r\n var data = window['xlog_imgLogData'] || (window['xlog_imgLogData'] = {}); \r\n var img = new Image(); \r\n var uid = index;\r\n data[uid]=img;\r\n img.onload = img.onerror = function () {//销毁一些对象 \r\n img.onload = img.onerror = null; \r\n img = null; \r\n delete data[uid]; \r\n }\r\n img.src = src;\r\n \r\n // var fakeImgId = \"xlog_fake_img_\"+index;\r\n // var fakeImgClass = \"xlog_fake_img\";\r\n // //var fakeImage=document.getElementById(fakeImgId);\r\n // var fakeImage = document.createElement('img');\r\n // fakeImage.setAttribute(\"class\", fakeImgClass); \r\n // fakeImage.setAttribute(\"id\",fakeImgId);\r\n // fakeImage.style.position=\"absolute\";\r\n // fakeImage.style.left=\"-10000px\";\r\n // fakeImage.style.top=\"-10000px\";\r\n // fakeImage.style.display=\"none\";\r\n // fakeImage.setAttribute(\"data-src\",src);\r\n // utils.addEventHandler(fakeImage,\"load\",function(evt){\r\n // var target = evt.srcElement ? evt.srcElement:evt.target;\r\n // target.parentNode.removeChild(target);\r\n // })\r\n \r\n // if(document.body){\r\n // utils.launchFakeImg(fakeImage);\r\n // }else{//加入执行队列,等onready之后再统一处理\r\n // utils.waitForRequests.push(fakeImage);\r\n // }\r\n}\r\n\r\nutils.launchFakeImg=function(domObj){\r\n var src = domObj.getAttribute(\"data-src\");\r\n domObj.setAttribute(\"src\",src);\r\n document.body.appendChild(domObj);\r\n}\r\n\r\nutils.onDomReady = function(cb){\r\n var ie = !!(window.attachEvent && !window.opera);\r\n if (!ie && document.addEventListener)\r\n document.addEventListener('DOMContentLoaded', cb, false);\r\n if (ie){\r\n (function() {\r\n try { document.documentElement.doScroll('left'); cb(); }\r\n catch (err) { setTimeout(function(){\r\n cb();\r\n }, 0); }\r\n })(); \r\n }\r\n}\r\n\r\nutils.checkWait=function(){\r\n while(utils.waitForRequests.length){\r\n utils.launchFakeImg(utils.waitForRequests.shift());\r\n }\r\n}\r\n\r\n//头部插入script标签\r\n// utils.appendScript = function(index, src) {\r\n// try {\r\n// var script = document.createElement(\"script\"),\r\n// head = document.getElementsByTagName(\"head\")[0];\r\n\r\n// script.id = config.pre+\"_script\" + index;\r\n// script.src = src;\r\n// script.type = \"text/javascript\";\r\n\r\n// head.appendChild(script);\r\n// } catch (e) {\r\n// utils.errorHandler(\"appendScript\", e);\r\n// }\r\n// };\r\n\r\n//日志内部错误处理函数\r\nutils.errorHandler = function(source, error, logger) {\r\n var message = logger+\" encountered an unexpected error.\\n\\nSource: \" + source + \"\\nDescription: \" + error;\r\n console.log( message ); \r\n};\r\n\r\n//这里主要是给远端那个日志js加载后执行的,为了删除掉当前上报后的script标签\r\n// utils.removeScript = function(index) {\r\n// try {\r\n// var script = document.getElementById(config.pre+\"_script\" + index),\r\n// head = document.getElementsByTagName(\"head\")[0];\r\n// head.removeChild(script);\r\n// } catch (e) {\r\n// utils.errorHandler(\"removeScript\", e);\r\n// }\r\n// };\r\n\r\n//添加元素事件\r\nutils.addEventHandler = function(oTarget, sEventType, fnHandler,useCapture) {\r\n if (oTarget.addEventListener) {\r\n oTarget.addEventListener(sEventType, fnHandler,useCapture);\r\n } else if (oTarget.attachEvent) {\r\n oTarget.attachEvent(\"on\" + sEventType, fnHandler);\r\n } else {\r\n oTarget[\"on\" + sEventType] = fnHandler;\r\n }\r\n return fnHandler;\r\n};\r\n//移除元素事件\r\nutils.removeEventHandler = function(oTarget, sEventType, fnHandler,useCapture) {\r\n if (oTarget.removeEventListener) {\r\n oTarget.removeEventListener(sEventType, fnHandler,useCapture);\r\n } else if (oTarget.detachEvent) {\r\n oTarget.detachEvent(\"on\" + sEventType, fnHandler);\r\n } else { \r\n oTarget[\"on\" + sEventType] = null;\r\n }\r\n};\r\n//转换map类结构变成key1=value1&key2=value2zifuchuan\r\nutils.nodeXmlToStr=function(mapObj){\r\n var arr = [];\r\n var len = mapObj.length;\r\n for(var i=0;i=0?'?'+url.split(\"?\")[1]:\"\";\r\n }else{\r\n url = window.location.search;\r\n }\r\n var reg = new RegExp(\"(^|&)\" + name + \"=([^&]*)(&|$)\", \"i\"); \r\n var r = url.substr(1).match(reg); \r\n if (r != null) return r[2]; return null; \r\n} \r\n\r\n//获取自身js加载路径\r\nutils.getSelfUrl=function(myName){\r\n var scripts = document.getElementsByTagName('script');\r\n // 获取现在已经加载的所有script\r\n if(scripts.length>0)\r\n {\r\n var lastScript = scripts[scripts.length-1]\r\n var src = lastScript.src.toLowerCase()\r\n if(src.indexOf(myName)>=0){\r\n return src;\r\n }else{\r\n var len = scripts.length\r\n for(var i=0;i=0){\r\n return src;\r\n }\r\n }\r\n }\r\n }\r\n return \"\";\r\n}\r\n\r\n//是否取样\r\nutils.willHandle=function(sample){\r\n var rnd = Math.random()*sample>>0;\r\n if(rnd==0){\r\n return true;\r\n }\r\n return false;\r\n}\r\n\r\nutils.log=function(msg){\r\n if(config.isDevelop){\r\n console.log(msg)\r\n }\r\n}\r\n\r\nutils.isIE=function(){\r\n var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串\r\n var isOpera = userAgent.indexOf(\"Opera\") > -1;\r\n if (userAgent.indexOf(\"compatible\") > -1 && userAgent.indexOf(\"MSIE\") > -1 && !isOpera) {\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n}\r\n\r\nmodule.exports = utils;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/utils.js\n// module id = 1\n// module chunks = 0 1 2","var config = require(\"./config\");\r\nvar utils = require('./utils');\r\nvar jsErrorLogger = require(\"./logger/jsErrorLogger\");\r\nvar resLogger = require('./logger/resLogger');\r\nvar performanceLogger = require('./logger/performanceLogger');\r\n\r\nconfig.domainIgnore=[];\r\n\r\nvar xlog = {\r\n\tconfig:config,\r\n\tutils:utils,\r\n\tjsErrorLogger:jsErrorLogger,\r\n\tresLogger:resLogger,\r\n\tperformanceLogger:performanceLogger,\r\n\tlaunch:function(){\r\n\t\tconfig.init()\r\n\t\tjsErrorLogger.launch()//处理ie9及以下错误\r\n\t\tresLogger.launch()\r\n\t\tperformanceLogger.launch()\r\n\r\n\t\tif(window.NamedNodeMap){ //IE8及以下不支持\r\n \t\tutils.addEventHandler(window,\"error\", function(event){\r\n \t\t\tvar result = resLogger.handleError(event)\r\n \t\t\tif(!result){\r\n \t\t\t\tjsErrorLogger.handleError(event)//这里只处理ie10以上并且script不跨域\r\n \t\t\t}\r\n \t\t},\r\n \t\ttrue)\r\n \t}\r\n\r\n\t\tutils.onDomReady(function(){\r\n\t\t\tutils.checkWait()\r\n\t\t})\r\n\t}\r\n}\r\nwindow.xlog = xlog\r\n\r\nvar selfUrl = utils.getSelfUrl(\"/xlog\")\r\nvar sample = utils.getQueryString(\"sample\",selfUrl)\r\nvar autoStart = utils.getQueryString(\"auto\",selfUrl)\r\nif(autoStart==0){\r\n\t\r\n}else{\r\n\tsample = sample?sample:config.sample\r\n\tif(utils.willHandle(sample)){\r\n\t\txlog.launch();\r\n\t}\r\n}\r\n\r\nmodule.exports = xlog;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./src/xlog.js\n// module id = 2\n// module chunks = 0 1 2","var utils = require(\"../utils\");\r\nvar config = require(\"../config\");\r\n\r\nvar jsErrorLogger = {};\r\nvar name = \"jsErrorLogger\";\r\nvar type = 1;\r\n\r\nfunction say(msg){\r\n utils.log(name+\" : \"+msg);\r\n}\r\n\r\n/*\r\n报错样例:\r\nwindow.onerror函数调用的参数顺序如下:\r\nArguments[5]\r\n0:\"Uncaught ReferenceError: plupload is not defined\" -msg\r\n1:\"http://m.guba.eastmoney.com/js/newpost.js?v=0.06\" -file_loc\r\n2:265 -line_no\r\n3:22 -col_no\r\n4:ReferenceError: plupload is not defined at init_uploader (http://m.guba.eastmoney.com/js/newpost.js?v=0.06:265:22) at init_upload_image (http://m.guba.eastmoney.com/js/newpost.js?v=0.06:262:2) at HTMLDocument. (http://m.guba.eastmoney.com/js/newpost.js?v=0.06:117:2) at l (http://m.guba.eastmoney.com/js/jquery-1.8.3.min.js:2:16996) at Object.fireWith [as resolveWith] (http://m.guba.eastmoney.com/js/jquery-1.8.3.min.js:2:17783) at Function.ready (http://m.guba.eastmoney.com/js/jquery-1.8.3.min.js:2:12504) at HTMLDocument.A (http://m.guba.eastmoney.com/js/jquery-1.8.3.min.js:2:9909)\r\ncallee:(msg, file_loc, line_no, col_no)\r\nlength:5\r\nSymbol(Symbol.iterator):values()\r\n__proto__:Object\r\n */\r\n\r\n//私有函数\r\n//发送到服务器\r\nfunction sendError(file_loc, line_no, col_no, msg, stack) {\r\n try {\r\n // format the data for the request\r\n //var param = \"\";//config.url + \"?i=\" + i; //index\r\n //param += \"&sn=\" + escape(url); //页面URL\r\n var param = {};\r\n param.res_url = utils.encode(file_loc); //脚本URL\r\n param.ln = line_no; //出错行号\r\n param.cn = (typeof col_no === \"undefined\") ? \"\" : col_no;//出错列号\r\n param.msg = msg?utils.encode(msg.substr(0, 256)):\"\"; //为了限制url总长度\r\n param.stack = stack?utils.encode(stack.substr(0, 1000)):\"\";//防止自定义信息过长,限定256,毕竟是get\r\n \r\n param.xt=type; //xtype 日志类型\r\n\r\n console.log(param)\r\n // 检查是否达到每页的最大报错数量\r\n if (config.maxRep > 0 || config.maxRep === false) {\r\n if (config.maxRep > 0) {\r\n config.maxRep -= 1;\r\n }\r\n utils.requestRemote(param);\r\n }\r\n } catch (e) {\r\n utils.errorHandler(\"sendError\", e,name);\r\n }\r\n}\r\n\r\n//错误处理函数\r\nfunction handleError(msg, file_loc, line_no, col_no, stack) {\r\n if (config.domainWhitelist.length > 0) {\r\n if (utils.matchDomains(file_loc,config.domainWhitelist) === false){\r\n console.log(\"jsErrorLogger - report ignored because \" + file_loc + \" did not match the whitelist\" );\r\n return;\r\n }\r\n }\r\n\r\n if (config.domainIgnore.length > 0) {\r\n if (utils.matchDomains(file_loc,config.domainIgnore) === true){\r\n console.log(\"jsErrorLogger - report ignored because \" + file_loc + \" matched the blacklist\" );\r\n return;\r\n }\r\n }\r\n\r\n if (config.ignoreCrossOriginErrors && msg == \"Script Error\" && line_no == \"0\") {\r\n console.log(\"jsErrorLogger - cross origin script error ignored because no additional error info supplied.\");\r\n return;\r\n }\r\n\r\n // 是否需要忽略页面url参数\r\n var url = document.URL;\r\n if (config.qsIgnore.length > 0) {\r\n url = utils.stripQueries( window.location, config.qsIgnore);\r\n\r\n // file_loc也过滤一下get参数\r\n // (in some cases, like an explicitly thrown exception, fileloc might be empty)\r\n if (typeof file_loc !== \"undefined\" && file_loc.length > 1) {\r\n\r\n file_loc = utils.stripQueries( utils.parseURL(file_loc),config.qsIgnore );\r\n\r\n }\r\n }\r\n //发到服务器\r\n sendError(file_loc, line_no, col_no, msg, stack);\r\n\r\n return true;\r\n}\r\n\r\njsErrorLogger.handleError=function(event){\r\n try {\r\n if(event && event.target==window && event.error && event.error.stack ){//ie9以下无效\r\n say(\"handleError \"+event)\r\n\r\n var lineno = event.lineno>=0?event.lineno:-1\r\n var colno = event.colno>=0?event.colno:-1\r\n var stack = event.error && event.error.stack?event.error.stack:''\r\n\r\n handleError(event.message, event.filename, lineno, colno, stack)\r\n\r\n return true\r\n }\r\n }\r\n catch(e){\r\n say(e)\r\n }\r\n return false\r\n}\r\n\r\n/**\r\n * 手动导出开启函数\r\n * @return {[type]} [description]\r\n */\r\njsErrorLogger.launch=function(){\r\n // if (window.scriptError) return;\r\n\r\n //做下低版本浏览器兼容\r\n // if( !Array.prototype.indexOf )\r\n // {\r\n // Array.prototype.indexOf = function( element ){\r\n // for( var i=0, ilen=this.length; i0)\r\n // {\r\n // var len = scripts.length\r\n // for(var i=0;i 0) {\r\n if (utils.matchDomains(file_url,config.domainWhitelist) === false){\r\n say(\"report ignored because \" + file_url + \" did not match the whitelist\" );\r\n return;\r\n }\r\n }\r\n\r\n if (config.domainIgnore.length > 0) {\r\n if (utils.matchDomains(file_url,config.domainIgnore) === true){\r\n say(\"jsErrorLogger - report ignored because \" + file_url + \" matched the blacklist\" );\r\n return;\r\n }\r\n }\r\n}\r\n\r\nvar handleError = function(event){\r\n try {\r\n if(typeof(event)!=\"string\" && event.target !== window){//过滤掉window的运行时错误,也就是隔壁jsErrorLogger的错误,IE8及以下的err都是string并且404的捕获不到\r\n if(event.target && event.target.attributes && event.target.attributes instanceof NamedNodeMap){\r\n say(\"handleError \"+event)\r\n var res_url = \"\"\r\n var attr = \"\";\r\n if(event.target.src){\r\n res_url = event.target.src\r\n }else if(event.target.href){\r\n res_url = event.target.href\r\n }else if(event.target.currentSrc){\r\n res_url=event.target.currentSrc\r\n }\r\n if(res_url!=\"\"){\r\n var attrObj = {};\r\n attrObj['tag']=event.target.nodeName.toLowerCase();\r\n attrObj['res_url'] = utils.encode(res_url);\r\n attrObj['xt'] = type;\r\n attrObj['type'] = 1\r\n // console.log(res_url)\r\n utils.requestRemote(attrObj);\r\n }\r\n }\r\n return true\r\n }\r\n }\r\n catch(e){\r\n // throw e;\r\n say(e);\r\n }\r\n return false\r\n}\r\n\r\n\r\nvar logResource = function(){\r\n var resources = performance.getEntriesByType('resource')\r\n if(resources && resources.length>0){\r\n var len = resources.length\r\n var resource=null\r\n var jsonObj = {}\r\n var resource_hash = \"\"\r\n for(var i=0;i>0\r\n\r\n if(duration