那些奇葩API,是怎么一步步塑造现代Web的?
聊聊那个被所有浏览器无视的 API 参数
你知道吗?浏览器藏着一个"没人用的"参数
我最近发现一个挺有意思的东西,想跟大伙儿聊聊。
做前端的朋友估计都知道 canPlayType(),这玩意儿返回值要么是空字符串,要么是"maybe"或者"probably"——模糊得让人抓狂。但今天要说的主角不是它。
今天聊聊 History.pushState()。
这方法接受三个参数:state、title、url。前两个挺好理解——state 用来存数据,用户点返回按钮时 app 可以恢复状态;url 用来更新地址栏,还不刷新页面。
但第三个参数 title……
它被所有浏览器完全无视了。
对,你传什么进去,浏览器看都不看。
好端端的参数怎么就成了摆设?
这事得从 2008 年说起。
当年设计 History API 的时候,大神们想的是:浏览器应该让网页自己设置每个历史记录的标题。比如你的 Dashboard 页面,浏览器标题栏显示"Dashboard",但历史记录里存成"数据分析报告"。
听起来挺合理对吧?
结果浏览器厂商一琢磨,发现这主意有坑:
用户收藏了一个页面,回头从收藏夹点开,发现浏览器标签显示的标题跟收藏夹里写的不一样——这不是扰乱用户吗?
想改?怕出问题。
不管它?也行,但之前已经有网站按三个参数写好代码了,直接删掉会炸掉线上项目。
怎么办?
最后人家想了个妙招:参数名改成 unused,然后在文档里写清楚——"这玩意儿没效果"。
优雅,克制,不动声色。
向后兼容:Web 世界的第一铁律
说白了,这就是 Web 最大的特点:绝对不轻易breaking老代码。
甭管你 2008 年写的代码有多离谱,只要跑得起来,浏览器就得接着支持。哪怕功能早就没人用了,哪怕参数名变成了"unused"。
宁可背一身历史包袱,也不敢动一丁点。
这东西往好了说叫"稳定",往玄了说叫——
屎山之所以是屎山,不是因为程序员菜,是因为后来的人不敢动。
说回正事
我们做域名和托管服务,接触多了就发现:选技术跟选服务商,逻辑是一样的。
你想做一个能撑十年的东西——文档站、媒体库、落地页——就别追新追奇。老老实实用稳得住的技术,今天能跑,十年后还能跑。
选域名注册商和主机商也是同理。
找那些懂得"长期主义"的公司。Web 不会消失,你今天搭的东西,五年后、十年后还得能用。技术和基础设施,都得看长线。
最后
下次你碰到什么奇怪的 API、废弃的参数,别急着骂街。
想一下——
可能当年有人做了个决定,后来发现不太对,但已经来不及了。整个互联网都绑在上面,谁也不敢动。
这就是 Web。
它不完美,但它一直在努力让所有人都别掉队。
Respect the weirdness。挺好。