跟踪用户操作¶
浏览器监控会自动检测用户的交互行为,并深入了解用户的行为,而无需您手动检测应用程序中的每次点击。
您可以实现以下目标:
- 了解关键交互的性能(例如,单击某个操作按钮)
- 量化功能采用情况
- 确定某个浏览器错误的步骤
控制是否开启 Action 采集¶
trackUserInteractions 初始化参数可以收集应用中的用户点击,这意味着页面中包含的敏感和私有数据可能会被包含在内,以识别用户与之交互的元素。
跟踪用户交互¶
RUM SDK 自动跟踪点击次数。 如果满足以下所有条件,则会创建点击操作:
- 检测到点击后的活动,即页面活动状态;
- 单击不会导致加载新页面,在这种情况下,RUM SDK 会生成另一个 RUM View 事件;
- 能够获取到 Action 名称。
Action 指标¶
| 指标 | 类型 | 描述 |
|---|---|---|
action.duration |
number(ns) | 动作的加载时间。 |
action.action_long_task_count |
number | 为此操作收集的所有长任务的计数。 |
action.action_resource_count |
number | 为此操作收集的所有资源的计数。 |
action.action_error_count |
number | 为此操作收集的所有错误的计数。 |
RUM SDK 通过监听每次点击后的页面活动来计算操作加载时间。当页面不再有活动时,操作被视为完成。
Action 属性¶
| 属性 | 类型 | 描述 |
|---|---|---|
action.action_id |
String | 用户操作的 UUID |
action.action_type |
String | 用户操作的类型。对于自定义用户操作,设置为 custom |
action.action_target |
String | 用户与之交互的元素。仅适用于自动收集的操作 |
action.action_name |
String | 创建用户友好的名称(例如“Click on #checkout”)。 对于自定义用户操作,API 调用中给出的操作名称 |
Action 操作的名称¶
RUM SDK 会根据可点击元素及其父元素推断 Action 名称。如果自动生成的名称不够稳定,可以使用内置属性显式命名。
在可点击元素或其父元素上添加 data-guance-action-name:
使用 actionNameAttribute 初始化参数,可以为元素添加自定义属性来指定操作的名称。
初始化时指定属性名:
window.DATAFLUX_RUM &&
window.DATAFLUX_RUM.init({
// 其他初始化配置
trackUserInteractions: true,
actionNameAttribute: "data-custom-name"
})
在可点击元素或其父元素上设置对应属性:
当元素上同时存在内置属性和 actionNameAttribute 配置的自定义属性时,内置属性优先。
保护自动 Action 名称¶
RUM SDK 3.3.14 及以上版本可通过 enablePrivacyForActionName: true,将 DOM 隐私级别应用到自动推断的 Action 名称:
window.DATAFLUX_RUM &&
window.DATAFLUX_RUM.init({
// 其他初始化配置
trackUserInteractions: true,
enablePrivacyForActionName: true,
defaultPrivacyLevel: "mask-user-input"
})
该开关默认为 false,以保持现有应用的 Action 命名行为。开启后,SDK 会结合 defaultPrivacyLevel 与祖先元素上的 data-gc-privacy 属性或 gc-privacy-* 类名计算实际隐私级别。
| 隐私级别 | 自动 Action 名称行为 |
|---|---|
allow |
沿用现有命名策略。 |
mask |
使用固定名称 Masked Element,不会读取 DOM 文本或标准命名属性;允许区域中的遮罩后代文本也会被排除。 |
mask-user-input |
保护私密表单控件的文本和标准命名属性,非表单内容保持现有行为。 |
hidden |
隐藏子树中的点击不生成自动 Action。 |
通过上文内置属性或 actionNameAttribute 显式指定的名称被视为应用主动提供的业务元数据,在 mask 和 mask-user-input 下仍可使用;hidden 子树仍不会生成自动 Action。该开关只影响自动采集的 Action 名称,通过 addAction() 传入的名称仍由应用自行控制。
Shadow DOM 中的 Action¶
RUM SDK 支持自动采集开放 Shadow DOM(mode: "open")内部的点击操作:
- 根据事件的实际点击元素生成 Action 名称和包含 Shadow 边界的定位信息;
- 支持由 iframe 的 JavaScript realm 创建、再挂载到 ShadowRoot 的元素,例如无界微前端渲染的按钮;
- 支持从同一 ShadowRoot 内的
aria-labelledby关联元素获取名称; - 支持单层及多层嵌套的开放 ShadowRoot。
跨越 Shadow DOM 边界时,自动 Action 名称只使用显式命名属性,或按钮、链接、ARIA 等具有明确语义的交互
元素,不会将任意文本节点、表格行或卡片容器的聚合文本作为名称。对于没有原生交互语义的自定义容器,
请在点击元素或其祖先上添加 data-guance-action-name,或通过 actionNameAttribute 配置自定义命名属性:
该限制只应用于跨越 Shadow DOM 边界的自动 Action 命名,普通 DOM 保持原有命名策略。
Closed Shadow DOM(mode: "closed")不会向外部脚本暴露内部节点,因此只能按浏览器事件提供的 Shadow Host
信息采集,无法保证获得内部元素的名称和定位信息。
自定义 Action¶
无法通过点击表达的业务操作,请使用 addAction API 创建自定义 Action。
验证接入¶
- 点击带有明确名称的按钮。
- 在浏览器 Network 中确认存在
/v1/write/rum上报请求。 - 在对应 Web 应用的 Action 查看器中检查 Action 名称、持续时间以及关联的 Resource 和 Error 数量。
如果没有 Action,依次确认 trackUserInteractions 是否为 true、当前 Session 是否命中采样,以及点击后是否发生了可归因的页面活动。