UNPKG

spy-client

Version:

spy client

159 lines (143 loc) 5.04 kB
<html lang="en"> <head> <meta charset="UTF-8"> <title>SPY Client Test</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <script src="/dist/spy-head.js"></script> <script> // 配置 window.__spyHead && window.__spyHead.init({ pid: '1_1000', lid: 'xx', // 数据类型:异常,触发时间:OnLoadResourceError resourceError: { group: 'resource', sample: 0.1, handler: function (data) { } }, // 数据类型:异常,触发时间:OnJSError jsError: { group: 'js', sample: 1, handler: function (data) { } }, // 数据类型:异常,触发时间:OnJudgeReturnFalseWhenTimeout whiteScreenError: { sample: 0.1, group: 'whiteScreen', selector: 'body', subSelector: 'button1', timeout: 2000, handler: function (data) { } } }); </script> </head> <body> <!-- <div style="height: 667px;"> --> <div id="main"> <div>open</div> <p> TypeScriptJavaScriptJavaScript 的超集用于解决大型项目的代码复杂性一种脚本语言,用于创建动态网页。可以在编译期间发现并纠正错误作为一种解释型语言,只能在运行时发现错误强类型,支持静态和动态类型弱类型,没有静态类型选项最终被编译成 JavaScript 代码,使浏览器可以理解可以直接在浏览器中使用支持模块、泛型和接口不支持模块,泛型或接口支持 ES3,ES4,ES5 和 ES6 等不支持编译其他 ES3,ES4,ES5 或 ES6 功能社区的支持仍在增长,而且还不是很大大量的社区支持以及大量文档和解决问题的支持 </p> </div> <script src="https://mss0.bdstatic.com/se/static/js/iphone/zbios/zbiosT_f69.js"></script> <script src="/dist/spy-client.js"></script> <script src="/dist/spy-local-cache.js"></script> <script type="text/javascript"> const localCache = new SpyLocalCache({ storage: 'localstorage', maxRecordLen: 300, compress: 'no', onAdd(log) { // 仅保存性能异常 console.log('onAdd', log && log.type && (log.type === 'perf' || log.type === 'except')); return log && log.type && (log.type === 'perf' || log.type === 'except'); }, onFlush(list) { console.log('flushed list', list); if (list.length) { // 将回捞的日志上报的spy,记住在spy平台配置 对应group spy.sendPost({ pid: '1_1000', type: 'except', group: 'localCache', ts: Date.now(), lid: 'xxxx', info: { msg: 'localcache', pageUrl: location.href, log: JSON.stringify(list) } }); } } }); const spy = new SpyClient({ pid: '1_1000', lid: 'xxxx', localCache: localCache }); // 采用spy-client sdk内置的抽样配置,则此异常日志不管是否命中抽样,都会存在本地,同时若命中抽样,则日志发送给服务端 // 那么所有spy sdk发送的日志会存到localstorage spy.sendExcept({ info: { msg: 'xxxx is not undefined' } }); // 若自行做了抽样,那么此时则需要主动将此异常或性能日志存在本地,才能百分百保存异常信息到本地 localCache.addLog({ type: 'except', ts: Date.now(), lid: 'xxx', info: { msg: 'module "jquery" miss', pageUrl: location.href, } }); if (Math.random() < 0.1) { spy.sendExcept({ info: { msg: 'module "jquery" miss', pageUrl: location.href, } }); } spy.sendPerf({ // 可选, 分组,默认common,用户自定义 group: 'test', // 必须, 指标信息,每个字段为一个指标,由用户自定义 info: { fisrtScreen: 200, // 需要你自行计算好时间再发送,不能带单位 }, // 可选,维度信息,每个字段为一个维度,由用户自定义 dim: { os: 'ios', netType: 'wifi' } }); // 当有22条如下日志时 // lzw 压缩率 68%,耗时 2ms // huffman压缩率 21% ,耗时2ms localCache.addLog({ type: 'perf', info: { res: 200, }, }); localCache.addLog({ type: 3, fm: 'disp', data: [{"base":{"size":{"doc":{"w":360,"h":4875},"wind":{"w":360,"h":640},"scr":{"w":360,"h":640}},"vsb":"visible","num":16},"t":1629773746698,"path":"/s"}], qid: 10991431029479106376, did: '8dd09c47c7bc90c9fd7274f0ad2c581e', q: '刘德华', t: 1629773746698 }); </script> </body> </html>