为什么我们不能写hotjar?——程序小白对hotjar实现的简单理解及移动端实现hotjar录屏功能分析

2 篇文章 0 订阅
1 篇文章 0 订阅

为什么我们不能写hotjar?

——程序小白对hotjar实现的简单理解及移动端实现hotjar录屏功能分析

前言:

因为个人所在公司做相关基于应用的优化、提升、数据分析、用户引流等服务,常想我们为什么不能开发一款类似于hotjar的应用来服务移动端与客户端,而且收费低于hotjar甚至提供一定的免费优化从而为我们的其他产品供应流量;下面是我对hotjar原理简单的分析,以及移动端的实现,若所述不当尽请谅解。
(首先请先了解hotjar的功能)

客户端实现

在这里插入图片描述
首先在客户端的实现,当用户进入已经配置hotjar的页面加载完成后hotjar即开始运行,前端高频率记录用户鼠标的移动路径,并且先存入Redis缓存中,储存信息包含并不限于页面id、移动路径、点击次数位置等,之后在后台拿到Redis中数据,而且传入后台前我们可以把一个页面的所有移动路径、页面id、点击次数等数据装入一个json的一个数组的单个元素中,多个页面依序分别放入:

json= {
    "uid":1,
    "key":value,
    "data": [
        { "pageid":"1", "info":[ {"Mousepath":******}, {"Clickposition":["坐标","次数"]}", "**************" ] },
        { "pageid":"2", "info":[ {"Mousepath":******}, {"Clickposition":["坐标","次数"]}", "**************" ] },
        { "pageid":"3", "info":[ {"Mousepath":******}, {"Clickposition":["坐标","次数"]}", "**************" ] }
    ]
}

以上json仅仅是一个简单的模型化设计实际情况要复杂的多
接着后台接到了我们的请求拿到json数据之后先进行解析存库,但是之后客户想要查看用户使用轨迹时是一大难点,因为要进行用户轨迹的反呈现,我的想法是当客户想要查看实用分析时,在服务器后台进行一次用户移动轨迹加鼠标位置及点击次数的还原,操作方式是:后台使用demo页(无用户隐私)加上一系列轨迹次数还原一个用户点击场景呈现给我们的客户,这就需要我们要开发一个功能相当强大的核心回溯生成视频应用,至于此应用的实现我并不了解、并任何没有接触,但是整个hotjar的基本流程就走完了,或者说思路就串了一遍,!!!!!!不过hotjar的实现肯定是相当复杂。

移动端实现

移动端与客户端的实现类似,不过移动端又存在但不仅限于不同型号的设备适配等问题,当我们部署了类hotjar的SDK之后,需要将大量本机数据也要传回来,整体思路差不多,但是细节方面又有着很大区别,不同的APP不同的响应时间都要被考虑进去,所以对SDK的设计又是一大考验。

这就是我对hotjar简单的分析,漏洞很多,自己水平有限,欢迎大家一起讨论。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Vue和Element UI中实现移动禁止截可以通过以下步骤来实现: 1. 阻止截:可以通过监听`window`对象的`keyup`、`keydown`和`keypress`事件,当用户按下截快捷键时,阻止默认行为。 ```javascript mounted() { window.addEventListener('keyup', this.handleScreenCapture); window.addEventListener('keydown', this.handleScreenCapture); window.addEventListener('keypress', this.handleScreenCapture); }, methods: { handleScreenCapture(event) { if (event.keyCode === 44) { // PrtSc键的keyCode为44 event.preventDefault(); } } }, beforeDestroy() { window.removeEventListener('keyup', this.handleScreenCapture); window.removeEventListener('keydown', this.handleScreenCapture); window.removeEventListener('keypress', this.handleScreenCapture); } ``` 2. 阻止:目前Web无法直接阻止移动设备上的行为,但可以通过添加一层透明的遮罩层来阻挡软件的截功能。在Vue中,可以使用Element UI的`Dialog`组件来实现遮罩层。 ```vue <template> <div> <el-dialog :visible="dialogVisible" :center="true" :modal="false" :show-close="false" :close-on-click-modal="false"> <div class="dialog-content"> <p>禁止</p> </div> </el-dialog> <!-- 页面其他内容 --> </div> </template> <script> export default { data() { return { dialogVisible: true }; } }; </script> <style> .dialog-content { width: 100vw; height: 100vh; background-color: rgba(0, 0, 0, 0.01); } </style> ``` 以上代码中,通过设置`dialogVisible`为`true`,使得`Dialog`组件显示为透明的全遮罩层。你可以根据需要自定义遮罩层的样式和内容。 请注意,这种方式只能防止一些常见软件的截功能,无法完全阻止所有行为。因为在移动设备上,软件通常会使用系统级别的截权限,无法通过前代码进行完全控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值