美文网首页
Img前端埋点

Img前端埋点

作者: 小灰灰_a | 来源:发表于2023-01-10 15:31 被阅读0次

背景

对项目中统计一些用户行为、某些事件点击量、某些重要页面的曝光量等信息的统计;

统计信息

  • 某些页面pv、页面停留时间
  • 浏览器版本及操作系统信息
  • 某些按钮的点击次数
  • 操作用户的信息
  • ...

埋点方案

  • 页面pv,停留时间这些可以通过url跳转及跳出时间进行统计
  • 浏览器信息直接window获取
  • 可以全局监听 click 事件,通过给 ButtonLink 等添加 data-id 进行统计
    在vue项目中可以通过监听vue-router 钩子directive 自定义指令进行实现,项目为 react项目,以下为react实现方式,其实实现思路都是一样的

实现方案

项目中使用的是 img 来实现埋点数据的发送,img属于原生的HTML属性,兼容性比ajax要好很多,而且支持跨域,但如果用户禁用网页加载图片,那么将无法正常发送埋点数据。

具体代码实现

  • 公共类封装
export interface IPointProps {
  buttonType?: string  // 按钮类型
  browerVersion?: string // 浏览器版本
  userInfo?: string //用户信息
  referrer?: string //来源
  currentUrl?: string // 当前url
}
// 公共类封装
class PointSDK {
    constructor() {
      // 性能分析
      this.initPerformance(); 
    }
    // 初始化性能分析
    initPerformance() {
      const url = 'xxx';
      this.send(url, performance.timing)
    }
    // 获取浏览器信息
    getBrowerVersion() {
        const navigator = window.navigator
        return {
            browerVersion: navigator.userAgent
        }
    }
    // 通过img发送埋点数据
    send(url: string, params = {} as any) {
        const arr = []
        for (let key in params) {
            arr.push(`${key}=${params[key]}`)
        }
        const newUrl = `${url}?${arr.join('&')}`
        // 使用img发送埋点数据
        const img = new Image();
        img.src = newUrl;
    }
    // 自定义事件
    event(baseurl: string, value: IPointProps) {
        const api = `${baseurl}${'/api/point'}`
        const client = this.getClient()
        // 处理url中的 特殊符号,# & 等
        // const url = `${window.location.href?.replace(/#/g, '%23').replace(/&/g, '%26')}` 

        // 存在用户信息则统计,反之不需要
        value.userInfo && this.send(api, { ...client, ...value })
    }
}

const pointSDK = new PointSDK();

const Point = {
    event: (baseurl: string, value: IPointProps) => pointSDK.event(baseurl, value)
}

本文参考阿里开发者文档

相关文章

  • web 埋点

    数据埋点是什么?设置数据埋点的意义?web 埋点实现原理了解一下 前端监控和前端埋点方案设计美团点评前端无痕埋点实践

  • Web系统后台行为记录

    关于后台行为记录,可理解为对用户请求的监控日志。也可理解为埋点的一种。通常埋点可简单分为前端埋点和后端埋点。 前端...

  • 前端埋点技术文档

    前端监控和前端埋点方案设计 阿里前端监控实践

  • 前端监控和前端埋点

    前端监控和前端埋点,一个是目的,一个是实现方式,做前端埋点,是为了做前端监控,那为什么要做前端监控呢? 前端监控的...

  • 前端埋点上报

    本文所说的埋点上报,只包含两种:点击上报(click)、曝光上报(show)。 整体思路: 点击上报: 使用 wi...

  • 前端异常埋点

    前言 开发者有时会面临上线的生产环境包出现了异常? ,在长期生产bug并修复bug的循环中总结出一下几个痛点: 无...

  • 前端埋点VueMatomo

    npm install vue-matomo main.js App.vue第一次进入this.$matomo为u...

  • 前端埋点-报错监控

    说起埋点又到了谈起前端项目中数据收集与监控,那么今天来简单的聊下前端报错监控的埋点。 首先先安利下自己做的报错监控...

  • 小谈前端埋点

    最近在公司做个小程序相关的前端埋点项目,之前也只是听说过这个名词,却没有深入的研究过,总结一下最近一周学到的东西。...

  • 前端埋点监控方案

    推荐 推荐一款比较好的前端埋点监控的方案——webfunny[https://www.webfunny.cn/ho...

网友评论

      本文标题:Img前端埋点

      本文链接:https://www.haomeiwen.com/subject/pxjvcdtx.html