移动端埋点失效92%:3个交互细节被技术忽略
|
去年四月,我们推了个新版弹窗组件,首页右下角浮层,点“立即体验”跳活动页——就这一个按钮,埋点数据二十来分钟断掉八成,凌晨三点还在盯后台曲线。我盯着那条斜着往下掉的折线,像看心电图快停跳。 技术说“没改上报逻辑”,我说“那你查查点击事件监听挂没挂上”,他敲了三遍console.log,回我:“挂了,eventListener在。”可上报日志里压根没这条点击。我让他抓包——结果真抓到了:请求发出去了,但body是空的,Content-Length: 0。他皱眉,“是不是触发太早?DOM还没render完?”我摇头,“这个弹窗是useEffect后mounted才show的,比React.StrictMode还守时。” 后来翻commit记录,发现前端同事上周提了PR,把整个弹窗封装成自定义hook,叫useFloatingCTA。关键在这儿:他在useCallback里写了onClick,但没把event.preventDefault()包进去——而我们的埋点SDK要求:只要调了preventDefault,就必须显式传个fakeEvent给上报函数,否则它默认跳过。没人告诉SDK这事,SDK也从不报错,它就静静吞掉所有preventDefault后的点击。 我原以为是竞品在刷量干扰,结果切了灰度流量一比,自家iOS用户点击率正常,安卓低到离谱。再细看,安卓WebView用的是X5内核第七版,而X5第七版有个bug:当addEventListener绑定在document.body上,且callback里含preventDefault时,事件对象会在冒泡中途被清空——不是undefined,是{ },空对象。我们的埋点函数第一行就if(!e.target) return,于是全军覆没。iOS Safari和Chrome都好好的,就X5第七版卡在这儿。技术团队没人测过X5第七版,连测试机列表里都没有。
文章配图,仅供参考 (刚才楼下咖啡机又不出热水,按了八次,第三次起指示灯闪红——和那个埋点失败时控制台里一闪而过的warning颜色一模一样)另一个细节:弹窗里文案换了三轮,“马上开启”→“限时领取”→“一键直达”,每次PM改字都只改i18n文件,但埋点事件名硬编码在按钮props里,叫"home_float_btn_click",死的。所以当文案变成“一键直达”那天,运营跑来说“为什么‘一键直达’的转化漏斗断在第一步”,没人知道那根本不是新事件,只是旧事件还在打,只是没人看日志里那堆重复的event_name字段值——它没变,它一直叫home_float_btn_click,只是运营以为新文案该配新ID。反正他们用Excel拉数,字段名对就信。 还有个细节:用户第一次进APP,会弹引导页,引导页第三步有个小箭头指向浮层位置,箭头点击后自动show浮层并自动聚焦按钮——这时候的click事件是由focusin触发的,不是人手点的。我们的埋点逻辑写的是“监听click”,但focusin冒泡产生的click,在X5第七版里event.isTrusted永远是false。而SDK里那段判断代码是if(!e.isTrusted) return;——它删掉了所有非手点事件,包括这个自动聚焦触发的。技术说“这是安全策略,防脚本模拟”,我说“可用户确实点了啊”,他说“可浏览器说这不是可信事件”。我也不知道该信浏览器,还是信用户手指。 整件事里最冷的不是失效,是失效后没人问一句:“上次上线时,谁测过X5第七版下带preventDefault的冒泡click?”没人问。连问的人都没有。测试同学上周刚转岗去测小程序了,走之前把安卓真机表交给了实习生,表里X5版本那一栏空着,手写补了句“应该差不多”。差不多——这三个字,比92%这个数更准。 有谁碰到过这个吗 (编辑:航空爱好网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


媒体网站无障碍设计:9个被技术忽略的CSS适配点
WAP2.0网页设计中的交互细节


