Skip to content

自定义事件 ​

你可能需要在录制 rrweb 事件的同时记录一些自定义事件,并让它们像其他事件一样被回放。自定义事件 API 正是为此而设计的。

开始录制后,我们可以调用 record.addCustomEvent API 来添加自定义事件。

js
import { record } from '@rrweb/record';

// start recording
record({
  emit(event) {
    ...
  }
})

// record some custom events at any time
record.addCustomEvent('submit-form', {
  name: 'Adam',
  age: 18
})
record.addCustomEvent('some-error', {
  error
})

addCustomEvent 接受两个参数。第一个是字符串类型的 tag,第二个是任意类型的 payload。

回放时,我们可以为自定义事件添加事件监听器,也可以在 rrweb-player 的时间轴中配置自定义事件的样式。

监听自定义事件

js
import { Replayer } from '@rrweb/replay';

const replayer = new Replayer(events);

replayer.on('custom-event', (event) => {
  console.log(event.tag, event.payload);
});

在 rrweb-player 中展示

js
new rrwebPlayer({
  target: document.body,
  props: {
    events,
    // configure the color of tag which will be displayed on the timeline
    tags: {
      'submit-form': '#21e676',
      'some-error': 'red',
    },
  },
});