h5怎么和移动端交互 (遥遥领先用户实测)

最近新上了一个功能,高层非常之关注,毕竟要拿来给投资画饼,CEO李总试用了一番,结果流程被block住,拉住小胖的领导满嘴芬芳,看来年底的绩效危矣…搞不定还要N+1,怎么办?…

用户操作录制

在一些关键性操作时需要录制用户的操作情况,作为日志查询或客户纠纷佐证,这里李总的操作block,需要小胖来复现一下,咱推荐下下面的这个库,大家可以打样试试

遥遥领先5g手机,遥遥领先5g视频

rrweb

rrweb 是 'record and replay the web' 的简写,旨在利用现代浏览器所提供的强大 API 录制并回放任意 web 界面中的用户操作

rrweb 主要由 3 部分组成:

  • rrweb-snapshot ,包含 snapshot 和 rebuild 两个功能。snapshot 用于将 DOM 及其状态转化为可序列化的数据结构并添加唯一标识;rebuild 则是将 snapshot 记录的数据结构重建为对应的 DOM。
  • rrweb ,包含 record 和 replay 两个功能。record 用于记录 DOM 中的所有变更(mutation);replay 则是将记录的变更按照对应的时间一一重放。
  • rrweb-player ,为 rrweb 提供一套 UI 控件,提供基于 GUI 的暂停、快进、拖拽至任意时间点*放播**等功能。

遥遥领先5g手机,遥遥领先5g视频

支持cdn和npm安装方式使用

npm install --save rrweb
<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/rrweb@latest/dist/rrweb.min.css"
/>
<script src="https://cdn.jsdelivr.net/npm/rrweb@latest/dist/rrweb.min.js"></script>
let events = [];

rrweb.record({
  emit(event) {
    // 将 event 存入 events 数组中
    events.push(event);
  },
});

// save 函数用于将 events 发送至后端存入,并重置 events 数组
function save() {
  const body = JSON.stringify({ events });
  events = [];
  fetch('http://YOUR_BACKEND_API', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body,
  });
}

// 每 10 秒调用一次 save 方法,避免请求过多
setInterval(save, 10 * 1000);

开源地址:rrweb/README.zh_CN.md at master · rrweb-io/rrweb · GitHub