vue中使用rrweb实现页面回放功能
rrweb实现页面回放功能 实现页面可回溯
rrweb github开源地址
rrweb简介
- rrweb他是啥?*rrweb 指的是’record and replay the web’,它是一个用于记录和回放用户在网络上的交互的工具。作为一个开发者可能在项目中你可能会遇到各种奇怪的需求。例如记录和回访网页上所有的操作记录。
- rrweb能干嘛?相信看到标题的同学都知道 是用于记录用户在页面上的所有操作纪录,那么问题来了在日常开发中可以用在那些地方呢? 答:微信小程序,h5小程序,uni-app,浏览器页面。(只要你所开发得东西是由html+css开发得就能实现录制回放)
- rrweb的录制原理?**就是记录你操作的元素并且把操作时候的时间戳给你记录下来,把这些操作和时间戳存储成增量的快照,然后通过时间戳依次播放出来。**如果想更详细的了解可以转移官方文档rrweb录制播放实现原理
rrweb的使用小demo
rrweb的主要就是录制和播放两个方法
1.安装rrweb
下面两个依赖包 rrweb的是录制依赖包,rrweb-player为回放依赖包
npm install --save rrwebnpm install --save rrweb-player
2.录制
由于我是在一进入页面就开始录制的所以我的录制是放在App.vue文件下面的。
参数说明:
- import * as rrweb from “rrweb”; 引入rrweb录制
- 通过rrweb.record()的方法开启录制。这个方法里面传入一个emit方法,方法的event就是录制视频的视频片段,他会把所有的数据都存到event里面。
- 我们需要把这个event视频片段 存起了 我这里是存到了 vuex里面,当然你也可以存到
localstorage,sessionstrage,indexedDB浏览器内存里面,再或者可以直接通过axios,或者ajax
发送给后台,等播放的时候再拿出来。 - 当然rrweb.record返回一个 方法(stopFn)你可以使用这个方法去停止视频录制,我这里是在12秒后去停止了录制,如果你想一直录制视频可以把定时器去掉他就会一直录制视频。了解录制更多参数
- 最后在页面进入的时候调用这个方法。到这个地方录制一切准备就以就绪了。
如果是vue2的话 直接把onMounted 改成mounted就行了。
//1.引入rrwebimport * as rrweb from "rrweb";//2.点击录制const startRecord = () => {//record() 方法启动录制//stopFn为暂停录制的方法let stopFn = rrweb.record({//12秒后停止页面的录制,如果想一直录得话可以去掉。emit(event) {setTimeout(() => {stopFn();}, 12000);// 用任意方式存 储 event store.commit("updateEvents", { event: event });},});ElMessage({message: "开启视频录制",type: "success",});};onMounted(() => {startRecord();});
3.播放
新建一个组件back.vue当进入这个页面得时候就暂停录制,或者你也可以写个按钮 去出发暂停。
- 视频放功能 引入 播放器的样式import “rrweb-player/dist/style.css”;
- 引入播放的实例 import rrwebPlayer from “rrweb-player”;
- new rrwebPlayer()这个实例,里面可以传一个对象。 对象里面传入target 字段 ,对应得是视频播放的区域,还有一个props。了解更多参数可以去开发文档
props: {
events: store.state.events,
speedOption: [1, 2, 5, 10],
},传入props字段 里面得events为你在录制时候存储得视频片段。speedOption为视频播放器得倍速设置。
<template><div class="counte"><div id="playback"></div></div>
</template><script>
import { ref, onMounted } from "vue";
import { useStore } from "vuex";
import rrwebPlayer from "rrweb-player";
import "rrweb-player/dist/style.css";
export default {name: "Back",setup(props) {const store = useStore();//回放实例const replayer = ref(null);onMounted(() => {stopRecord();});// //4.点击回放const stopRecord = () => {replayer.value = new rrwebPlayer({target: document.getElementById("playback"), // 可以自定义 DOM 元素props: {events: store.state.events,speedOption: [1, 2, 5, 10],},});};return {};},
};
</script><style>
.n {display: none;
}
</style>
希望可以帮到你
vue中使用rrweb实现页面回放功能相关推荐
- vue中组件在不同页面中渲染出错
vue中组件在不同页面中渲染出错 封装了一个组件 封装了一个组件 遇到问题了,特向各位大佬请教 比如我封装了一个 child 组件 我在father 页面中引入 可以正常使用 而且css 样式不会出现 ...
- Vue使用Print插件实现页面打印功能/打印列表
Vue使用Print插件实现页面打印 示例 官网地址可以下载最新版 官网 下载 npm 安装 npm install print-js --save npm安装时将库导入项目(main.js) imp ...
- vue中按ctrl原页面锁定打开新页面
可以通过vuex 或者 写个公共文件实现 vuex 实现思路 1.监听键盘按下事件 2.如果按下的按钮为ctrl, 就修改状态为true, 键盘抬起或者按键不对 状态都为false 3.需要监听所有的 ...
- vue中自定义组件“ directives “的常用功能
directives 可以全局使用以及组件内部定义使用 directives是什么? 注册自定义的指令 directives有什么作用? 对普通 DOM 元素进行底层操作,就会用到自定义指令 dire ...
- vue中实现拖拽调整顺序功能
一.使用vuedraggable是标准的组件式封装 或 vue-dragging 指令方式 实现拖拽调整顺序功能. 1:安装依赖 npm install vuedraggable或yarn add v ...
- Vue中实现pdf文件预览功能
写在前面: 实现的功能就是点击预览按钮,弹出对话框在线预览pdf文件 实现此功能的前提是需要在Vue项目中安装组件vue-pdf, 在终端命令行输入运行如下语句: npm install --save ...
- vue中tab选项卡刷新页面后保持选中状态_Altium Designer中的快捷键汇总
双十一活动详情请联系客服了解 在任何软件环境中,为了提高工作效率,你可以做的一件事就是学习快捷键.击键比将鼠标小心地放在按钮上或点击菜单来查找命令更有效,一旦用熟悉了,它们就变成了您的第二天性.本文将 ...
- vue中使用微信jssdk语音聊天功能
1.绑定域名 2.引入JS文件 前面两步不细说,直接看官方文档就行,官方文档 3.wx.config配置: 在这边要注意有一个坑必须要注意一下:可能会遇到安卓系统配置正常,ios上面报签名无效配置失败 ...
- vue中如何在登陆页面不显示导航栏
导航栏作为系统的通用组件,我并不想让其显示在登陆页面中,因此可以按照以下方法实现 1.将通用组件如导航栏等和<router-view />放在一起 app.vue <div>& ...
- Vue中实现图片下载到本地功能和导出(下载)excel文件功能:
一.实现图片下载到本地功能 需求: 将勾选的列表项的id传给后台,让后台处理并下载对应的图片 1. 后台接口: 下载图片zip: GET /download 请求数据类型 application/x- ...
最新文章
- 从0到1构建大数据生态系列1:数据蛮荒中的拓荒之举
- Netty实战七之EventLoop和线程模型
- 虫趣:BAD POOL CALLER (par1: 0x20)
- ValidateAntiForgeryToken的用途,解释和示例
- 南海区行政审批管理系统接口规范v0.3(规划) 5.投资项目联合审批系统API 5.1.【uploadFile】证件文书附件上传...
- python修改字体无效_matplotlib中修改默认字体
- 【通信总线】CAN 总线简介及应用
- 4.26,最好用的新浪图床GG了,博客满屏的403
- Tableau自定义调色板
- python初学入门————列表
- 【字节前端青训营】跟着月影学JavaScript——前端代码优化三大原则之各司其职,夜间模式小案例
- 精简配置的虚拟磁盘在快照删除过程中膨胀为更大的大小(56608)
- element-ui 表格使用多选 如何回显打勾
- 在Excel中插入行并复制单元格格式
- R语言使用dplyr包的full_join函数基于多个字段(数据列)全连接两个dataframe、按照多列对数据进行全连接
- 袁萌浅谈C919大飞机(三)
- Arduino温湿度监测与股票涨跌提醒
- Vulnstack(四)
- 自动驾驶汽车的车道检测
- 使用EasyExcel实现Excel的导入导出
热门文章
- 面试系列(九):商汤科技 深度学习平台C++研发
- 斑马Zebra LP2844 打印机驱动
- 生存或毁灭? 国内DIY现状大型调查分析
- Beaglebone Black - 控制 BBB 板上的 LED 灯
- 解决Can‘t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock‘ (2)
- 自下而上合并排序算法
- 软件项目管理 6.5.自下而上估算法
- Java课程设计:课堂派的三端构建
- 碎片时间”绑架了多少焦虑的现代人?
- 起底硅谷最神秘、估值最高的大数据公司:Palantir