File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ ## 用户行为收集
2+
3+ 用户在页面中可能有如下行为:
4+
5+ - 鼠标行为
6+ - 键盘行为
7+ - 页面跳转行为
8+ - 点击行为
9+
10+ 通过收集这些用户行为数据,我们可以分析用户的行为模式、偏好和需求,从而优化网站或应用的设计和功能,提高用户体验和业务指标。亦或是页面发生错误时,我们可以根据这些行为来还原错误。
Original file line number Diff line number Diff line change 1+ ## 错误录屏回放
2+
3+ ### rrweb原理
4+
5+ 在展示代码前我先讲解讲解rrweb的原理。
6+
7+ 1 . 生成快照:在页面开始时rrweb会先生成一份页面的快照,用于记录网页初始状态
8+
9+ 1 . 快照的原理:使用深度优先遍历对 DOM 树进行序列化,记录每个节点的属性(如 ` tagName ` 、` id ` 、` className ` )、子节点、样式、位置信息等。
10+ 2 . 生成的快照数据结构是一个 JSON 格式对象,包含页面的完整初始状态。
11+
12+ 2 . 捕获用户的操作:监听用户在页面上的所有操作事件,包括鼠标事件、键盘事件、滚动事件、窗口大小改变、视图变化等。这些事件被序列化成一系列“增量快照”。
13+
14+ 事件序列化格式:
15+
16+ > ** 时间戳** :事件发生的时间。
17+ >
18+ > ** 事件类型** :例如 ` mousemove ` 、` click ` 等。
19+ >
20+ > ** 位置或内容变化** :例如鼠标的位置、输入框的新值。
21+ >
22+ > ** 目标元素** :事件发生的目标元素的引用。
23+
24+ 3 . 增量快照
25+
26+ 1 . 增量快照的作用:记录用户操作导致的页面变化,例如,用户点击一个按钮后,按钮的 ` className ` 发生变化,这种局部变化会被记录为增量快照
27+ 2 . 增量快照的实现:使用 ` MutationObserver ` 监听 DOM 的变化,记录新增、删除、修改的节点和属性
28+
29+ 4 . 事件轴管理
30+
31+ ` rrweb ` 会为每个事件分配一个时间戳,用于记录事件的发生时间。时间戳有助于在回放时正确地还原事件的顺序和间隔
32+
33+ 5 . 回放
34+
35+ 1 . 根据初始快照重建 DOM 树,初始化回放页面。
36+ 2 . 依次读取事件流,根据时间戳和事件类型触发相应的操作
37+ 3 . ` rrweb ` 会根据事件流的时间戳计算事件之间的间隔,确保回放时的操作流畅且符合真实用户操作
You can’t perform that action at this time.
0 commit comments