使用IntersectionObserver进行曝光打点
网页开发时,常常需要了解某个元素是否进入了"视口"(viewport),即用户能不能看到它。
IntersectionObserver
是浏览器原生提供的构造函数:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import 'intersection-observer' ; export default { async mounted() { await this .$nextTick() var io = new IntersectionObserver(entries => { console.log(entries) },{ threshold: [0, 0.25, 0.5, 0.75, 1] }); io.POLL_INTERVAL = 100; // Time in milliseconds. io.observe( this .$refs.content) } } |
上面代码中,IntersectionObserver
,接受两个参数:callback
是可见性变化时的回调函数,option
是配置对象(该参数可选)。
intersection-observer是做兼容处理的。
1 2 3 4 5 6 7 8 | // 开始观察 io.observe(document.getElementById( 'example' )); // 停止观察 io.unobserve(element); // 关闭观察器 io.disconnect(); |
IntersectionObserverEntry
对象提供目标元素的信息,一共有六个属性。
1 2 3 4 5 6 | time:可见性发生变化的时间,是一个高精度时间戳,单位为毫秒 target:被观察的目标元素,是一个 DOM 节点对象 rootBounds:根元素的矩形区域的信息,getBoundingClientRect()方法的返回值,如果没有根元素(即直接相对于视口滚动),则返回 null boundingClientRect:目标元素的矩形区域的信息 intersectionRect:目标元素与视口(或根元素)的交叉区域的信息 intersectionRatio:目标元素的可见比例,即intersectionRect占boundingClientRect的比例,完全可见时为1,完全不可见时小于等于0 |
参考:https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver
你要觉得这篇文章比较好,记得点推荐!
标签:
JavaScript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
2019-05-17 xterm.js的深入学习