document.addEventListener('click', (e) => {
const btn = e.target.closest('[data-cta]');
if (!btn) return;
navigator.sendBeacon('/collect', JSON.stringify({ id: btn.dataset.cta }));
});
后台看落地页 CTA 点击是零,实际订单有两百多单,按钮本身能正常跳转,事件列表里一条 click 都没有。这类现象通常不是突然出现的,往前翻半天日志能看到苗头。
追下去是这么回事:埋点绑在页面初始化的那个按钮上,模板后来又用 JS 重绘了一次按钮,新节点没有监听。事件委托没挂到不会变的父级,点击就漏了。
「CTA 埋点未触发」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。监控和日志的时间要对上,时区不一致会多绕很大一圈。
临时改动用注释写上日期和原因,过两周自己都记不清为什么这么写。
处理上按这个顺序:把监听挂到 document 或固定容器上,用 closest 匹配按钮选择器;跳转前留一个同步上报,别只依赖页面卸载后的异步发送;在控制台手动触发一次,确认事件名和参数与后台配置一致。
确认没问题再收工,点一次 CTA,网络面板里能看到一条 collect 请求,后台事件计数加一。
