宝哥软件园

谈微信小程序列表埋点曝光指南

编辑:宝哥软件园 来源:互联网 时间:2021-08-19

背景

在最近的项目中,开发了一个小程序列表页面,PM大大提高了对嵌入点的要求。当列表中的每个项目出现在屏幕上时,它需要报告一条记录。

目标

如果按图操作,应该依次上报第1-7项,但上滑时不会重复上报。

我要怎么做?

收到需求的第一感觉是,我是不是要监控页面滚动然后通过offsetTop计算!这显然不是最有效的。于是我翻看了一下微信的开发文档,发现有一个IntersectionObserver API,正好符合我的需求。

首先,我们需要创建一个交叉点观察者WX。创建交叉点观察器(对象组件,对象选项)

交叉服务器有四种方法

交叉观察器。Relativeto使用选择器指定一个节点作为参考区域之一。十字路口观察者。相对查看端口(对象边距)将页面显示区域指定为参考区域之一。十字路口观察者。ObserveCallback回调)指定目标节点,并开始监视交叉点状态的变化。十字路口观察者。Disconnect()停止监控。回调函数将不再触发这里的引用对象是屏幕,所以我们使用交集观察者。相对视口,使我们的参考对象和比较规则

页面({ data : { list : [{ value : 1,hadReport: false },{ value: 2,hadReport: false },{ value: 3,hadReport: false },{ value: 4,hadreport 3: false },{ value: 5,hadreport 3: false },{ value: 6,hadreport 333:_ observer=this . createintersectionobserver({ observer all : true })这。_ observer . relativetoviewport({ bottom : 0 })。观察('。item ',(RES)={ const { index }=RES . dataset;if(!this.data.list[index]。had RePOrt){ console . log(` RePOrt $ { index } `)this . data . list[index]。hadReport=true这最后的效果。setdata ({list: [])。concat(这个。data.list)})}},onunload () {if (this。_ observer)这个。_观察者。disconnect ()}})如下

结论

对于像这样的埋点,以后可以用监控dom的方式来做,而不是只想着监控和滚动来计算位置。这种监控方式除了能够上报埋点外,非常适合做偷懒加载图片等一系列操作。联合

以上操作都是基于微信小程序,那么浏览器是否有相应的API呢?

浏览器有对应的API,交集观察器API,具体用法和上面的用法类似。

var options={ root margin : ' 0px ',threshold : 1.0 } var observer=new intersection observer((.args)={ console . log(args);},选项);observer . observe(document . queryselector(')。item’);请注意,这将监控dom元素的可见性变化,这意味着当dom出现在窗口中时,它将触发回调,当它消失在窗口中时,它也将触发回调

但是,浏览器的IntersectionObserver属性的兼容性是通用的。如果想在浏览器中做曝光或者偷懒加载,可以考虑使用原来的方法,监控浏览器滚动,计算dom的offsetTop。可以参考一下作者很久以前写的图片延迟加载的原理和应用

参考文件

浅谈交叉服务器的延迟加载

微信小程序部门间服务器文档

以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

更多资讯
游戏推荐
更多+