同一次下载在统计后台记了两次,一次来源是按钮,一次来源是卡片容器,数据里点击量正好是下载量的两倍,按页面聚合更乱。日志里能对上时间点,这种反而好排。
点击事件同时绑在按钮和卡片上,按钮的点击冒泡到父级又触发一次。两处埋点用了不同事件名,报表里被当成两个动作。这一点先确认清楚,后面就不用反复试。
btn.addEventListener('click', (e) => {
e.stopPropagation();
track('download_click', { file: FILE_ID });
});
「下载按钮埋点」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。先做最小复现,能稳定跑出来的问题,排查成本会低一个数量级。
别只看报错的最后一行,往上看几行,真正的起因通常在上面。同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。
处理上按这个顺序:在按钮回调里调用 stopPropagation,阻止冒泡;全站统一一个事件名,参数里区分位置;点一次下载,确认统计后台只出现一条记录。
结果对不对很好判断,单次点击只产生一条埋点记录,下载量与点击数一致。
