点 GitHub 上一个文件链接,有时不如直接在新标签页打开来得快。

这个反常点很小,但很刺眼。浏览器最擅长的事,本来就是打开链接。可现在,很多网站偏要用大量 JavaScript 接管点击、滚动、选择、表单输入。页面看着更现代,用户却要重新学习怎么滚动、怎么选日期、怎么填密码。

Susam Pal 最近写了一篇文章,标题借用了软件安全圈的老话:Don't roll your own crypto,不要自己造加密。

这句话不是说没人会写加密算法。它真正提醒的是:生产环境里保护用户数据,不该依赖未经充分验证的私货。网页交互当然不是密码学,坏掉的滚动条也不等于加密失效。但类比成立:浏览器长期验证过的基础交互,很多网站没有必要再造一遍。

Pal 在批评什么

Pal 批评的不是所有自定义 UI。有些业务场景确实需要定制,复杂编辑器、专业设计工具、游戏化界面,都可能有自己的理由。

他真正反感的是另一类东西:浏览器原生能力已经够用,网站仍然为了风格、控制感或组件统一,把它替换掉。

被重造的东西浏览器本来解决了什么乱改后的常见代价
页面滚动鼠标、触控板、键盘滚动预期稳定速度怪、键盘失效、手感陌生
链接跳转打开、后台打开、新标签页、历史记录JS 接管后变慢、复杂、不可预期
密码框密码管理器、自动填充、安全提示、移动键盘、无障碍工具可能破坏填充、提示和辅助能力
日期选择器原生输入、键盘输入、系统一致性每个网站一套日历,用户被迫重学
频繁改版稳定记忆和操作路径低频用户、老年用户成本最高

GitHub 是他点名较多的例子。点击文件或 issue 链接时,导航会被 JavaScript 接管。Pal 的说法很克制:不是说 GitHub 故意拖慢,也不是恶意拦截,而是这种接管可能引入延迟和复杂性。讽刺的是,有时新标签页反而更快。

密码框更敏感。<input type="password"> 不只是把字符显示成圆点。它还和密码管理器、自动填充、强密码生成、不安全 HTTP 警告、移动端键盘、读屏软件配合。

你做一个假的密码框,可能把这些能力一起打碎。多数自定义控件的问题只是难用,密码框的问题更接近安全边界和可访问性边界。

日期选择器也类似。<input type="date"> 不完美,比如不直接支持日期范围。但 Pal 的主张不是迷信原生控件,而是优先保留原生入口。要范围,可以给开始日期和结束日期两个输入框。要增强,可以在旁边加控件,而不是把原生输入整个替换掉。

这事为什么重要

我更在意的,不是某个日期控件难不好用,而是现代前端对“控制”的迷恋。

团队想控制滚动手感,控制点击路径,控制菜单样式,控制表单行为,控制用户每一次微小动作。产品经理看到的是一致性,设计师看到的是品牌感,前端工程师看到的是组件化和可复用。

用户看到的往往是:我熟悉的浏览器突然不听话了。

这不是单纯的审美分歧。它是控制权转移。原本属于浏览器和用户的默认能力,被网站收回到自己的脚本、组件库和埋点系统里。

成本分布也不公平。

会写代码的人还能打开开发者工具吐槽两句。普通用户只会觉得“这个网站难用”。老年用户更惨,每次界面大改,都像家里的洗衣机按钮一夜之间重新排列。依赖键盘、读屏软件、辅助工具的人,甚至会被直接挡在门外。

对前端开发者和产品经理,这件事的动作层含义很简单:

角色该少做什么该多看什么
前端开发者少把原生链接、滚动、输入框一把接管键盘操作、自动填充、读屏、历史记录、打开新标签页是否正常
产品经理少把“统一视觉”和“沉浸跳转”当默认收益改版后低频用户、老年用户、辅助工具用户是否多付了学习成本
长期被网页交互折磨的技术读者少把每次难用都归因于自己不熟悉观察网站是不是替换了浏览器原生行为,必要时用新标签页、禁用脚本、换浏览器绕开

这里的判断标准不复杂:

如果自定义控件不能明显增加能力,就别替换原生控件。

如果替换后破坏键盘、自动填充、历史记录、新标签页、读屏,那就不是升级。

如果只是为了看起来更统一,更要小心。

“规则越基础,越不该炫技。”网页里的滚动、链接、输入,就像城市路口的红绿灯。你可以把灯做得更漂亮,但不能让每条街都有一套独创规则。

接下来该看什么

这类问题短期不会消失,因为它背后的激励很硬。

重造控件容易被看见。顺滑动画、统一组件库、沉浸式跳转,很容易写进改版总结。保留原生链接、保留原生输入、少动用户路径,看起来像没做事。

于是网页越来越精致,也越来越脆。高级感成了 KPI 的皮肤,稳定性反而没人领赏。

但也不能把话说满。不是所有自定义 UI 都错。复杂业务、跨端一致性、特殊输入场景、专业工具,都可能需要更强的组件。真正的分水岭不在“是不是原生”,而在有没有保住用户原本的能力。

接下来观察三件事就够了:

  • 链接是否仍能正常复制、后台打开、新标签页打开、保留历史记录。
  • 表单是否仍支持密码管理器、自动填充、键盘操作、移动端正确键盘和辅助工具。
  • 改版是否只提升视觉统一,却让低频用户重新学习路径。

历史上成熟基础设施都经历过类似阶段。铁路早期轨距不一,电力早期标准混乱,早期浏览器私有标签满天飞。情况不完全一样,但重复的是同一种冲动:谁都想用自己的规则占住入口。

最后真正省下社会成本的,往往不是最会炫技的那套,而是最多人不用思考就能使用的标准。

“天下熙熙,皆为利来。”今天很多网页交互的异化,也不只是开发者手痒。背后有品牌、有留存、有数据、有埋点、有转化漏斗。问题是,当每一次点击都被当成可优化对象,用户的默认权利就会被一点点拆走。

Pal 这篇文章值得读,也正在这里:它表面上是在抱怨滚动条、链接和日期框,实际是在提醒我们,浏览器原生能力不是低级替代品。

它们是多年兼容性、可访问性、用户习惯和安全边界沉淀出来的公共财产。

能不重造,就别重造。

产品真强,不靠抢浏览器的活来证明。