一个不成熟的曝光埋点解决方案

523 阅读1分钟

需求背景

要求是该物品出现在可视区域后,进行曝光埋点的上传

思路

有两种思路,在页面离开时统一上报已经曝光的物品,或者是一出现在可视区域就立即进行上报

  1. 如果是统一上报,考虑到如果数据量比较大,那么在页面离开时上报,可能会导致丢失数据,因为一旦离开页面,所有代码就会被销毁,所以最好不要使用这种方法。
  2. 如果是挨个上报,那么就需要对每一个元素都添加一个监听事件,一旦到达可视区域就执行曝光埋点,并取消相应的监听事件。为了能够做到曝光埋点事件只触发一次,我们应该创建一个map,每次遍历该map,当有元素执行了埋点事件之后就把该元素从map中删去,这样在下一次遍历 map 时就不会出现重复上报的情况。

代码

这里写的是第二种思路的代码,供参考。貌似在当前界面查看控制台会有点bug,请自行复制到 vscode 中查看