为什么监听页面自定义事件埋点在某些页面没触发?
最近在给项目加监控埋点,监听页面自定义事件page:view时,发现登录页能正常上报,但商品详情页完全没反应。
我用同样的代码监听了window.addEventListener('page:view', callback),登录页测试没问题,但详情页点击加载完成后就是没触发。两个页面引入监控SDK的顺序都是一样的,连CSS都是继承自同一个基类…
详情页容器用了这样的CSS:
.product-container {
overflow: hidden;
position: relative;
visibility: collapse; /* 这里可能是问题?*/
}
我试过在详情页手动调用document.dispatchEvent(new CustomEvent('page:view'))也没反应,但控制台打日志能正常输出。监控脚本加载时机没问题,其他通用埋点都能收到数据…
把 visibility: collapse 改成 hidden 或者直接用 display: none,别用 collapse,这玩意儿在某些浏览器下会完全干掉布局流,连带事件系统都抽搐。
还有,手动 dispatchEvent 没反应但日志能打,说明回调其实执行了,问题大概率是埋点上报逻辑里有 DOM 查询取不到节点导致后续中断,检查下你的监控 SDK 是否依赖 document.body 或特定容器。
把CSS改成这样就行: