监控平台之pvuv/点击事件/路由上报

2024-09-04 03:36

本文主要是介绍监控平台之pvuv/点击事件/路由上报,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

pv/uv上报方式
// 这里是pv的上报方式
// 可以用自定义标签定义data-spider,通过body-parser等方式获取body标签的值,进行上报
// export default function pv() {const reportData = {type: 'behavior',subType: 'pv',startTime: performance.now(),pageUrl: window.location.href,uid: generateUniqueId(),referrer: window.referrer,}lazyReportBatch(reportData) 
}// 可以自定义按钮的上报函数,暴露给外部调用
export default function funPV(options) {const reportData = {type: 'behavior',subType: 'pv',startTime: performance.now(),pageUrl: window.location.href,uid: generateUniqueId(),referrer: window.referrer,}for (const key in options) {if (reportData.hasOwnProperty(key)) {reportData[key] = options[key];}}lazyReportBatch(reportData) 
}
点击事件上报

监听mousedown,touchstart进行监听点击事件,

import {lazyReportBatch} from "../report"export default function click() {['mousedown', 'touchstart'].forEach(eventType => {window.addEventListener(eventType, e => {const target = e.target;if (!target.tagName) {return}const reportData = {type: 'behaviour',subType: 'click',pageUrl: window.location.href,target: target.tagName,clientX: e.clientX,clientY: e.clientY,startTime: e.timeStamp,innerHtml: target.innerHtml,outerHtml: target.outerHtml,width: target.offsetWidth,height: target.offsetHeight,path: e.path}lazyReportBatch(reportData) })})
}
路由上报

分为hashchange和popstate,根据是否有#进行分别,区别如下

hashChange 触发条件

hash是URL中#后面那部分,同时修改hash值不会引起页面的刷新,也不会向服务器重新发送请求。通过hashchange事件可以监听它的变化。改变hash值有以下三种方式:

  • 浏览器前进后退改变URL
  • 通过a标签锚点方式改变URL。
  • 通过window.location.hash改变URL
  • 调用history的back、go、forward方法

不能触发事件的方式

  • pushState和replaceState

备注:以上三种方式均可以触发hashchang事件, pushState和replaceState均不能触发hashchang事件

popstate触发条件

history提供了popstate监听事件,但是只有以下两种情况会触发该事件

  • 点击浏览器前进后退的按钮
  • 显示调用history的back、go、forward方法
  • 不能触发事件的方式

pushState和replaceState

  • a标签不能触发,因为非锚点模式直接跳转了页面。

这里记录了路由的from路径和to路径,根据业务具体需求上报参数

import {lazyReportBatch} from "../report"
import {generateUniqueId} from "../../utils"export default function pageChange(data) {// hash historylet oldUrl = ''window.addEventListener('hashchange', function(event) {const newUrl = window.location.href;const reportData = {from: oldUrl,to: newUrl,type: 'behavior',subType: 'hashchange',pageUrl: window.location.href,startTime: this.performance.now(),uuid: generateUniqueId(),}lazyReportBatch(reportData) oldUrl = newUrl;}, true); // 点击后退前进的时间let from = ''window.addEventListener('poststate', function(event) {const to = window.location.href;const reportData = {from,to,type: 'behavior',subType: 'poststate',pageUrl: window.location.href,startTime: this.performance.now(),uuid: generateUniqueId(),}lazyReportBatch(reportData) from = to;}, true); 
} 

这篇关于监控平台之pvuv/点击事件/路由上报的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1134884

相关文章

JVisualVM之Java性能监控与调优利器详解

《JVisualVM之Java性能监控与调优利器详解》本文将详细介绍JVisualVM的使用方法,并结合实际案例展示如何利用它进行性能调优,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1. JVisualVM简介2. JVisualVM的安装与启动2.1 启动JVisualVM2

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Nginx路由匹配规则及优先级详解

《Nginx路由匹配规则及优先级详解》Nginx作为一个高性能的Web服务器和反向代理服务器,广泛用于负载均衡、请求转发等场景,在配置Nginx时,路由匹配规则是非常重要的概念,本文将详细介绍Ngin... 目录引言一、 Nginx的路由匹配规则概述二、 Nginx的路由匹配规则类型2.1 精确匹配(=)2

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me

AJAX请求上传下载进度监控实现方式

《AJAX请求上传下载进度监控实现方式》在日常Web开发中,AJAX(AsynchronousJavaScriptandXML)被广泛用于异步请求数据,而无需刷新整个页面,:本文主要介绍AJAX请... 目录1. 前言2. 基于XMLHttpRequest的进度监控2.1 基础版文件上传监控2.2 增强版多