跨端兼容:15年工程师的无缝点击实践
|
去年1月那项目,产品经理拍着桌子说“移动端PC端必须无缝点击”,我原以为也就是改改touch事件,结果那周测试机堆了一桌子——从iPhone5到老华为P9,还有台Windows Phone在角落闪着死亡蓝光。运维小哥搬设备时碰倒了我的保温杯,枸杞茶洒在键盘上,黏得我敲回车键都费劲。 第一天卡在点击区域判定。移动端用touchstart,PC端用click,这谁都知道,可产品非说“要像原生APP一样跟手”。我改了三版方案:第一版用pointer-events,结果在IE11上直接失效;第二版加mousemove监听,低端安卓机卡成PPT;第三版咬着牙写了套手势库,刚想松口气,测试妹子举着iPhone6说:“点快了没反应。”我凑过去看,她指甲太长,实际触点偏移了八像素——这他妈算哪门子用户场景? 会议室里空调坏了,热得我扯开衬衫第二颗扣子。产品还在叨叨:“用户不会管你技术细节,他们只觉得卡就是垃圾。”我盯着他T恤上的油渍想,这货怕是从没自己写过一行代码。突然测试组的小王喊:“WP又挂了!”全屋人转头,那台Lumia950的屏幕像被施了定身咒,点半天没反应。我走过去拍了拍机器:“兄弟,15年工龄的工程师都救不了你,微软自己都放弃你了。” 转机在第三天下午。运维小哥修好空调后,我蹲在机房角落啃煎饼果子,突然想到:既然低端机性能差,干嘛不把点击判定从事件流里抽出来?用requestAnimationFrame轮询触点坐标,算出移动速度,超过阈值就判为滑动,否则算点击。这招在PC端其实早有人用,但移动端没人敢这么玩——怕耗电。可产品要的“无缝”,不就是得在性能和体验里找平衡吗? 我改了代码,测试妹子举着iPhone6狂点,这次没喊卡。小王拿着华为P9试了半小时,突然说:“哎,这比原生还跟手。”我叼着冰棍笑:“那当然,原生得照顾所有机型,咱们只伺候活着的。”产品经理凑过来要看数据,我指了指屏幕:“点击成功率98.7%,滑动误触率1.2%——够交差了。”他张了张嘴,没说出话——估计在想怎么把“无缝”写成KPI里的亮点。 但真正让我服气的,是优胜劣汰这四个字。那周我们砍了WP的支持——微软商店都关了,还兼容个屁;砍了IE11的特殊处理——微软自己都在推Edge;连安卓4.4都只保基础功能。产品经理刚开始还嚷嚷“用户可能有老设备”,结果运营数据出来,这些设备的访问量加起来不到0.3%。我指着报表说:“看见没?市场已经帮你做了选择,咱们没必要当慈善家。”他摸了摸鼻子,没再反驳。 后来项目上线,点击相关的投诉少了九成。运营总监在群里发红包,说“这次跨端兼容做得漂亮”。我领了八块八,转头把代码里那套手势库抽成了独立模块——说不定下回产品又要“无缝滑动”或者“无缝长按”呢。技术债这东西,欠着欠着就成资产了,只要别让它们烂在代码里。 现在回头看,那周最烦的不是改代码,是应付那些“顺手支持一下”的需求。产品总以为兼容就是多写几行if-else,可他们不知道,每多支持一个老设备,就要多测十种屏幕尺寸、五种浏览器内核、三种操作系统版本。我原以为“无缝”是技术问题,结果发现是取舍问题——你得先知道哪些设备该救,哪些该放弃。这大概就是15年工龄的底气吧:见过太多死掉的平台,知道哪些兼容是白费力气。
文章配图,仅供参考 对了,那台Lumia950后来被运维小哥拿回家当闹钟了——屏幕大,显示时间清楚。我偶尔路过他工位,会瞥一眼那台机器,黑着的屏幕像块墓碑,刻着“兼容性已死,有事烧纸”。(编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |

