Skip to content

rrweb-player

概述

使用本包可以开箱即用地获得功能丰富的回放 UI;如果你想构建自己的 UI,请使用 @rrweb/replay 包。

这就是云端控制台中使用的同款回放器。如果你想试用自己网站的回放效果,可以注册账号,并使用 "Test record any webpage" 书签工具快速录制一段。

这与 new Replayer() 有何不同?

new Replayer() 来自更底层的 @rrweb/replay 包,它在 iframe 中渲染并重建 rrweb 事件流。本包在其基础上,使用 Svelte UI 框架提供播放/暂停控件和时间轴等 UI。两者命名相似确实容易造成混淆,我们计划在未来的主要版本中解决。

安装

1) 打包器 / npm(推荐)

shell
npm install rrweb-player
js
import rrwebPlayer from 'rrweb-player';
import 'rrweb-player/dist/style.css';

2) 不使用打包器的浏览器环境(ESM)

html
<link
  rel="stylesheet"
  href="https://cdn.rrweb.com/rrweb-player/current/style.css"
/>
<script type="module">
  import rrwebPlayer from 'https://cdn.rrweb.com/rrweb-player/current/rrweb-player.js';
</script>

使用 current 指向最新稳定版本,或固定到精确版本(例如 https://cdn.rrweb.com/rrweb-player/2.0.0/rrweb-player.js),以获得不可变的 生产环境 URL。完整的 URL 结构和目录参见 CDN 资源文档

3) 传统的直接 <script> 引入方式(UMD 回退方案)

仅用于兼容非模块化环境。

html
<link
  rel="stylesheet"
  href="https://cdn.rrweb.com/rrweb-player/current/style.css"
/>
<script src="https://cdn.rrweb.com/rrweb-player/current/rrweb-player.umd.cjs"></script>

用法

js
new rrwebPlayer({
  target: document.body, // customizable root element
  props: {
    events,
  },
});

选项

默认值描述
events[]用于回放的事件
width1024回放器的宽度
height576回放器的高度
maxScale1回放器的最大缩放比例(1 = 100%),设为 0 表示不限制
autoPlaytrue是否自动播放
speed1默认回放速度倍率
speedOption[1, 2, 4, 8]UI 中的速度选项
showControllertrue是否显示控制器 UI
tags{}使用键值对映射自定义各类自定义事件的样式
inactiveColor#D4D4D4使用有效的 CSS 颜色字符串,自定义进度条中无交互时段指示器的颜色。
...-所有 rrweb Replayer 选项都会被透传

rrwebPlayer 组件的方法

ts
addEventListener(event: string, handler: (params: any) => unknown): void;
ts
addEvent(event: eventWithTime): void;
ts
getMetaData() => {
    startTime: number;
    endTime: number;
    totalTime: number;
}
ts
getReplayer() => Replayer;
ts
getMirror() => Mirror;

在播放/暂停之间切换

ts
toggle();

设置播放器的速度

ts
setSpeed(speed: number)

开启/关闭跳过无交互时段

ts
toggleSkipInactive();

触发尺寸调整,每次修改宽度/高度后都应调用

ts
triggerResize();

播放回放

ts
play();

暂停回放

ts
pause();

跳转到某个时间点,并从该时间点暂停或播放

ts
goto(timeOffset: number, play?: boolean)

播放指定时间区间,并(可选)循环播放

ts
playRange(
    timeOffset: number,
    endTimeOffset: number,
    startLooping: boolean = false,
    afterHook: undefined | (() => void) = undefined,
  )

在 GitHub 上编辑 README

rrweb-player 发布说明

2.1.1

补丁变更

  • #1901 a11f8ef 感谢 @kevinvandijk! - 修复 rrweb-player 生产构建,使 Svelte 生命周期 API 解析到浏览器运行时而不是桩代码

  • 更新依赖 []:

    • @rrweb/replay@2.1.1
    • @rrweb/packer@2.1.1

2.1.0

补丁变更

  • 更新依赖 [7f0f75f]:
    • @rrweb/replay@2.1.0
    • @rrweb/packer@2.1.0

2.0.1

补丁变更

  • 更新依赖 []:
    • @rrweb/replay@2.0.1
    • @rrweb/packer@2.0.1

2.0.0

重大变更

  • #1497 2606a2a 感谢 @Juice10! - 分发文件采用了新的文件名、路径和扩展名。重要提示:如果你直接引用分发文件或类型,可能需要更新你的路径/文件名,例如你从 rrweb/typings/...rrdom/es 导入。但如果你是通过 import rrweb from 'rrweb' 使用,则不会察觉到此变更带来的差异。 如果你直接在 script 标签中引入 rrweb 文件,可能需要将路径更新为对应的 .umd.cjs 文件。所有 .js 文件现在都使用 ES 模块,可在现代浏览器、node.js 以及支持 ES 模块的打包器中使用。所有 npm 包现在还同时提供 .cjs.umd.cjs 文件。.umd.cjs 文件是将所有文件打包在一起的 CommonJS 模块,便于向浏览器环境分发单个文件(类似于之前的 .js 文件)。.cjs 文件是可在旧版 Node.js 环境中使用的 CommonJS 模块。类型在 package.json 中有了更完善的定义,如果你需要特定类型,它们可能从新的包中导出(例如 PlayerMachineStateSpeedMachineState 现在从 @rrweb/replay 导出)。请查看 package.jsonmainexports 字段了解可用文件。

  • #1031 ad9bc3e 感谢 @Juice10! - 将共享的 rrweb 事件和录制器类型移至新的 @rrweb/types 包。

次要变更

  • #1039 bdd8940 感谢 @DexxDing! - 在播放器进度条中添加无交互时段指示器,并提供可配置的 inactiveColor 选项。

  • #1007 3924aaf 感谢 @Juice10! - 新增 player.playRange(start, end, loop?, afterHook?),用于播放限定的时间区间,可选循环播放或在区间结束时触发回调。

  • #1006 6f63cf1 感谢 @Juice10! - 新增 maxScale 选项,用于配置播放器的最大回放缩放比例,0 表示不限制缩放。

  • #859 e238462 感谢 @Juice10! - 新增按配置的 FPS 录制 canvas 快照的支持。

  • #895 de755ae 感谢 @Juice10! - 为回放新增快进虚拟 DOM 优化。

补丁变更

2.0.0-alpha.16—20

仅跟随 @rrweb/replay 和 @rrweb/packer 的变更发布补丁

补丁变更

  • 更新依赖 [db20184]:
    • @rrweb/replay (2.0.0-alpha.16—20)
    • @rrweb/packer (2.0.0-alpha.16—20)

2.0.0-alpha.15

重大变更

  • #1497 2606a2a 感谢 @Juice10! - 分发文件采用了新的文件名、路径和扩展名。重要提示:如果你直接引用分发文件或类型,可能需要更新你的路径/文件名,例如你从 rrweb/typings/...rrdom/es 导入。但如果你是通过 import rrweb from 'rrweb' 使用,则不会察觉到此变更带来的差异。 如果你直接在 script 标签中引入 rrweb 文件,可能需要将路径更新为对应的 .umd.cjs 文件。所有 .js 文件现在都使用 ES 模块,可在现代浏览器、node.js 以及支持 ES 模块的打包器中使用。所有 npm 包现在还同时提供 .cjs.umd.cjs 文件。.umd.cjs 文件是将所有文件打包在一起的 CommonJS 模块,便于向浏览器环境分发单个文件(类似于之前的 .js 文件)。.cjs 文件是可在旧版 Node.js 环境中使用的 CommonJS 模块。类型在 package.json 中有了更完善的定义,如果你需要特定类型,它们可能从新的包中导出(例如 PlayerMachineStateSpeedMachineState 现在从 @rrweb/replay 导出)。请查看 package.jsonmainexports 字段了解可用文件。

补丁变更

2.0.0-alpha.12—14

仅跟随 rrweb 的变更发布补丁

补丁变更

2.0.0-alpha.11

补丁变更

2.0.0-alpha.10

补丁变更

2.0.0-alpha.9

补丁变更

2.0.0-alpha.8

补丁变更

2.0.0-alpha.7

补丁变更

2.0.0-alpha.6

补丁变更

2.0.0-alpha.5

补丁变更