异常监控与其捕获
window.onerror,addEventListener('error'),什么时候用哪一种呢?
页面生命周期
DOMContentLoaded--浏览器已经加载完DOM,但是外部资源未加载;此时DOM已经就绪,此时查找DOM节点,初始化请求load--浏览器完成页面加载;此时资源已经加载完成,可以获取CSS,图片等外部资源信息beforeunload/unload--用户即将离开页面;beforeunload:用户正在离开,此时可以检查页面上诸如表单之类的是否要保存用于提示;unload:此时可以发送数据
脚本异常
请求异常
代码逻辑异常
source-map解析
网络切换异常
window.addEventListener('offline', this.eventHandle);
window.addEventListener('online', this.eventHandle);
页面visibility
日志合并上报
合并数据上报
在
unload或者beforeunload的时候发送同步请求
window.addEveneListener('unload', logData, false)
function logData() {
const xhr = new XMLHttpRequest()
xhr.open('POST', '/log', false)
xhr.send(data)
}
同步发送xhr请求的时候会导致页面在跳转的时候出现延迟
异步会导致页面的请求无法正常发送。用户代理提前跳转
navigator.sendBecon(url, data)
- 非阻塞
POST请求 - 返回值
trueorfalse
资源隔离
业务代码和上报的域名隔离