那些奇葩API,是怎么一步步塑造现代Web的?

六月 22, 2026 web-development browser-apis history-api frontend-development backward-compatibility single-page-applications javascript web-standards developer-experience

聊聊那个被所有浏览器无视的 API 参数


你知道吗?浏览器藏着一个"没人用的"参数

我最近发现一个挺有意思的东西,想跟大伙儿聊聊。

做前端的朋友估计都知道 canPlayType(),这玩意儿返回值要么是空字符串,要么是"maybe"或者"probably"——模糊得让人抓狂。但今天要说的主角不是它。

今天聊聊 History.pushState()

这方法接受三个参数:statetitleurl。前两个挺好理解——state 用来存数据,用户点返回按钮时 app 可以恢复状态;url 用来更新地址栏,还不刷新页面。

但第三个参数 title……

它被所有浏览器完全无视了。

对,你传什么进去,浏览器看都不看。


好端端的参数怎么就成了摆设?

这事得从 2008 年说起。

当年设计 History API 的时候,大神们想的是:浏览器应该让网页自己设置每个历史记录的标题。比如你的 Dashboard 页面,浏览器标题栏显示"Dashboard",但历史记录里存成"数据分析报告"。

听起来挺合理对吧?

结果浏览器厂商一琢磨,发现这主意有坑:

用户收藏了一个页面,回头从收藏夹点开,发现浏览器标签显示的标题跟收藏夹里写的不一样——这不是扰乱用户吗?

想改?怕出问题。

不管它?也行,但之前已经有网站按三个参数写好代码了,直接删掉会炸掉线上项目。

怎么办?

最后人家想了个妙招:参数名改成 unused,然后在文档里写清楚——"这玩意儿没效果"。

优雅,克制,不动声色。


向后兼容:Web 世界的第一铁律

说白了,这就是 Web 最大的特点:绝对不轻易breaking老代码

甭管你 2008 年写的代码有多离谱,只要跑得起来,浏览器就得接着支持。哪怕功能早就没人用了,哪怕参数名变成了"unused"。

宁可背一身历史包袱,也不敢动一丁点。

这东西往好了说叫"稳定",往玄了说叫——

屎山之所以是屎山,不是因为程序员菜,是因为后来的人不敢动。


说回正事

我们做域名和托管服务,接触多了就发现:选技术跟选服务商,逻辑是一样的。

你想做一个能撑十年的东西——文档站、媒体库、落地页——就别追新追奇。老老实实用稳得住的技术,今天能跑,十年后还能跑。

选域名注册商和主机商也是同理。

找那些懂得"长期主义"的公司。Web 不会消失,你今天搭的东西,五年后、十年后还得能用。技术和基础设施,都得看长线。


最后

下次你碰到什么奇怪的 API、废弃的参数,别急着骂街。

想一下——

可能当年有人做了个决定,后来发现不太对,但已经来不及了。整个互联网都绑在上面,谁也不敢动。

这就是 Web。

它不完美,但它一直在努力让所有人都别掉队。

Respect the weirdness。挺好。

Read in other languages:

PT PL NB NL HU IT FR ES DE DA EN