直接跳转代码,直接听起来像是跳转个偷懒的招数,可它偏偏是代码网页世界里最诚实的东西。你点一下,直接它就带你走,跳转不绕弯子,代码不问你意见。直接我见过太多花里胡哨的跳转页面,转场动画三秒起步,代码弹窗先问候你两声,直接最后才慢吞吞亮出正文——用户早走了。跳转直接跳转不是代码没礼貌,是直接懂规矩:时间比仪式感值钱。
前阵子帮朋友改一个电商站,跳转结算按钮点了之后要等两秒才跳转支付页。代码那两秒里页面在转菊花,用户的手指头已经悬在返回键上了。我翻代码,发现跳转前埋了个统计脚本,想抓用户停留时长。真没必要。支付环节的流失率本来就高,你还在前面挖坑。我删掉那行延迟,改成window.location.replace()——连历史记录都不留,用户回不去上一页,反而断了犹豫的念想。朋友说转化率涨了百分之三。这百分之三不是设计出来的,是让路让出来的。
直接跳转的核心就一个API:location.href。但写法和用法分高下。有人喜欢location.assign(),有人用location.replace(),区别只在浏览器历史里留不留脚印。你要是做问卷系统,填完一页跳下一页,就该用replace,免得用户按返回键把已提交的数据又翻出来。你要是做引导页,反而该用assign,让用户能退回上一步。这些细节,文档里都写着,可多数人只抄一行window.location.href = "xxx"就跑。
还有个坑,新手常踩。某些浏览器对location.href赋值有延迟,尤其页面里还有未加载完的图片或异步请求。你明明写了跳转,它偏要等资源加载完才动。这时候得用window.location.replace()或者干脆window.location = "url",后者在某些老引擎里反而更快。我见过一个后台系统,点“保存并新增”按钮,代码里先调接口再跳转,接口超时了页面就卡死。改成先跳转、再在下一个页面的onload里补调接口,体验立刻顺畅。跳转不是终点,是你给用户的一个承诺:那边有东西等着你,我保证。
我自己写跳转,习惯加个空锚点兜底。href="detail.html#sku-123",用户从列表页点进来,直接落到商品规格那块,不用滚屏。这不算什么高深技术,但胜在体贴。还有种情况,页面里嵌了iframe,你以为是整页跳转,结果只在框里动了。这时候得判断window.top,或者用window.open——但弹窗又容易被拦截。最稳的是后端发个302,浏览器自己处理,干净利落。
说到底,直接跳转代码就是一句话的事。但这句话放哪儿、怎么说、说完之后让不让用户回头,才是功夫。你写代码的时候,想象对面坐着一个着急的人,他手指已经点到屏幕上,眼睛盯着进度条。别让他等。别让他猜。给他一条最短的路,他记不住你的代码,但会记住你的干脆。