action
Jeffery authored
07f62a96
Name Last commit Last update
dist feat: add js-cookie
src action
.babelrc init
.gitignore init
README.md immediateReportPage
index.html init
package.json feat: add js-cookie
rollup.config.mjs init

tracker-sdk

采用图片上报的方式

引入方式

main.js 

import trackerSdk from 'tracker-sdk'

Vue.use(trackerSdk, {
  serverUrl: '', // 上报图片url 非必填,默认值:https://api-dev.kp-para.cn/event-gateway/events/site.png
  log: false, // 上报日志log, 控制台输出。非必填,默认值:false
  mock: false, // mock为true时,自动打开log, 不上报! 非必填,默认值:false
  immediateReportPage: true, // 初始化时,自动上报路由埋点。默认值:true
  data: {}, // 通用上报数据,每次上报时会携带。非必填,默认值:{}
})

注:trackerSdk已挂载在window、Vue原型上,兼容Vue2、Vue3

点击事件埋点

根据自定义属性,点击即可上报

<!-- key为产品定义 -->
<div data-tracker="aaa.bbb.ccc">111</div>

<!-- 对应循环的列表可以这样处理 -->
<div
  v-for="item in list"
  :key="item.id"
  :data-tracker="item.trackerKey"
>...</div>
// js上报
this.$trackerSDK.reportClickAction('client.home_right');
// or
window.$trackerSDK.reportClickAction('client.home_right');

页面埋点

在路由守卫中处理

注:首次进入页面,会自动上报一次


 router.beforeEach((to, from, next) => {
    // 在每次路由导航开始时记录进入页面的时间戳
    to.meta._startTime = Date.now() + '';
    next();
  });

  router.afterEach((to, from) => {
    const endTime = Date.now();
    const startTime = from.meta?._startTime || 0;
    const timeSpent = endTime - Number(startTime);
    if (startTime && from.name) {
      window.$trackerSDK?.reportPageView(location.origin + to.fullPath, {
        domin: location.host,
        duration: timeSpent / 1000, // "访问时长,单位秒"
        referrer: location.origin + from.fullPath, // 访问来源
        referrerDomin: location.host, // 来源域名
        beginAt: new Date(Number(startTime)).toISOString(),
        endAt: new Date().toISOString(),
      })
    }
  });