[笔记] 用户行为分析:JavaScript注入式监听所有DOM事件
来源:互联网 发布:mysql 锁表情况 编辑:程序博客网 时间:2024/05/03 09:25
公司内部的web工具有很多功能是会被经常使用的,有一部分是几乎废弃的。
那么,如何在不破唤性修改原有源代码的基础上去分析用户行为呢?
于是就想监听web UI上的所有事件,比如用户经常点一个button,那就证明这个button对应的功能是对用户非常有用的。
那么关键是要解决如何hook这些事件了。
一个很简单的解决方案:
https://github.com/dna2github/dna2petal/blob/master/samples/evtmonitor.html
https://github.com/dna2github/dna2petal/blob/master/evtmonitor/petal-evtmonitor.js
整个monitor框架代码也就一百行,思路也比较容易想到,就是replace掉addEventListener,在原来的addEventListener上封装一层,这样就可以达到hook所有事件的目的了。
为了让事件的callback和事件触发的target能可查找,代码中为Object添加了identifier的属性来唯一标识object。这样给出(target,callback)就能统计callback在target这里运行了多少次。
要是想要拓展也很简单:加一个函数给(target,event_callback)向map_listener里注册一个callback,这个callback会在每次target里触发event的时候被执行(js 59行),所以可以轻松的打出event对象进行分析。
注入这个东西也很简单,就是将<scripttype="text/javascript"src="../evtmonitor/petal-evtmonitor.js"></script>放在head的最前面,保证它尽可能早得被执行。之后再加<scripttype="text/javascript">$petal.evtmonitor.switchOn();</script>就开始hook了(见sample html)。
当然,这里的event monitor不适用于直接<tag onclick="callback()"></tag>和dom_obj.onclick=callback;。如果用的是jQuery,因为jQuery也是调用addEventListener,所以是可以被监听的。
后面就是获取用户行为数据进行统计了~
- [笔记] 用户行为分析:JavaScript注入式监听所有DOM事件
- JavaScript DOM事件(笔记)
- JavaScript 阻止DOM对象的所有事件
- 使用 JavaScript 分析用户访问行为数据
- 用户行为分析笔记(一)
- JavaScript DOM高级程序设计笔记__(二)----第四章 响应用户操作和事件
- IE与标准DOM的兼容之javascript事件监听
- 监听DOM操作事件
- JavaScript学习笔记之DOM事件句柄
- js---JavaScript中的事件委托/事件代理,如何通过事件委托进行异步DOM事件监听
- 8热水器用户行为分析与事件识别
- 第10章 家用电器用户行为分析与事件识别
- SNS用户行为分析
- 用户行为分析
- 用户行为分析算法
- 用户行为分析
- 用户行为分析心得
- 用户行为分析心得
- Activity中ScrollView Fragment切换界面跳动问题
- TCP SYN攻击
- 升级到spring4.0 注意事项 才支持jdk8
- 20 API-IO流(递归,IO流(字节流FileOutputStream,FileInputStream,字节缓冲区流BufferedOutputStream,BufferedInputStream
- POI3.x HSSF&XSSF Excel 操作快速入门
- [笔记] 用户行为分析:JavaScript注入式监听所有DOM事件
- Android Volley入门到精通:使用Volley加载网络图片
- Android自定义控件——3D画廊和图像矩阵
- 二分查找
- AsyncTask的使用方法和理解
- 9. grouped product
- Linux获取系统当前时间(精确到毫秒)
- 从编译原理理解数组名
- HDU 2015 偶数求和