# 前端性能优化 性能监控
# 错误捕获
script
每个是独立标签,独立的块
<body>
<script>
error;
console.log(1);
</script>
<script>
// 2
console.log(2);
</script>
</body>
- 语法错误,
try catch
是捕获不了的 setTimeout
等异步方法无法捕获
try {
setTimeout(() => {
error;
});
} catch (e) {
console.log("🍇");
}
//
window.onerror = function(msg, url, row, col, error) {
console.log("🌺", msg);
return true;
};
- img 资源引用错误等 html 脚本的错误的捕获
<body>
<img src="./xx.png" />
<script>
window.addEventListener(
"error",
function(msg, url, row, col, error) {
console.log("🌺", msg);
return false;
},
// 是否冒泡去接收
true
);
</script>
</body>
promise
错误
window.addEventListener("unhandledrejection", function(e) {
e.preventDefault();
console.log(e.reason);
return true;
});
new Promise((resolve, reject) => {
reject("第一个error");
}).catch(function(err) {
console.log(err);
});
Promise.resolve().then(() => {
throw "第三方error";
});
Promise.reject("第二个错误");
www.fundebug.com
付费错误监控badjs
- 监控报错转为视频
- 记录用户 xpath 用户操作栈
- 服务端 xpath -> gif
- socket 图片 html2canvas 服务端 帧-> server
- sessionstack 记录用户操作错的记录执行
- 容错的时候,不能占用 ajax,会占用并发 用
navigator.sendBeacon("xx.php")
专门用作统计
- zanePerfor github 项目