跳到主要内容

录屏

概览

借助rrweb对 DOM 的数据进行连续记录形成“视频”,当项目线上报错时,将录屏上传以辅助排查错误。

为什么要录屏 & 有什么风险

可以记录用户的操作,更好的复现线上的错误,帮助开发者排除错误。但是设计到隐私问题以及数据大小问题,录屏会设计到用户的敏感信息,比如输入账号密码等信息,这些信息需要抹去再录屏。并且录屏数据庞大,需要有良好的录制策略。rrweb 支持对相关设计到敏感信息的元素的“遮罩”处理,可以指定相关的类名,拥有这些类名的元素的内容将不会被录制,取而代之的是一个尺寸等大的空白块。

如何实现

rrweb 的原理是记录 DOM 的信息将其转换成 JSON 数据,然后用这些 JSON 数据再渲染出一个 DOM 出来。

开始录制后,收集每次 record 事件的 DOM 快照信息。当发生错误时上传录屏信息。

const record = () => {
stop = rrwebRecord({
emit(event, isNew) {
if (isNew) {
events.newEvent(event);
} else {
events.add(event);
}
console.log('recording');
},
checkoutEveryNms: 10 * 1000,
});
window.stopRecord = stop;
};

目前的录屏策略是每 10 秒重新录屏,到错误发生时发送当前录屏 JSON 信息。

回放

将记录的 DOM 数据传入 events 字段,然后自动回放容器元素。

const player = new rrwebPlayer({
target: el, // 可以自定义 DOM 元素
props: {
events,
width: 550,
height: 350,
},
});
网站备案:蜀ICP备2023001425号👏 Powered By Docusaurus, Semi Design