01|这场仗最早的开火方式,不是规范会议,而是浏览器厂商往 HTML 里偷偷塞礼物
如果你把 HTML 的历史只想成“标签慢慢变多”,那第二篇会显得像一堆旧标签回忆录。
它其实不是。
它更像一场地盘战。
第二篇最该记住的,也不是 <blink> 到底有多土。
而是:
谁在拿 HTML 抢作者,谁就在顺手改写 Web 的秩序。
上一篇刚讲完 HTML 最早更像文档语言。
可一旦 Web 走出研究机构、开始走向大众、走向市场,问题立刻变了。
大家不再只问:
- 文档怎么互相链接
- 结构怎么表达
他们开始问:
- 页面能不能更花一点
- 排版能不能更灵一点
- 浏览器能不能多给我一点别人没有的能力
从这一刻开始,HTML 第一次被硬生生拖进一场它原本并不擅长的战争:
浏览器大战。
而浏览器大战最直接的后果,就是:
标准还没站稳,浏览器厂商已经先往 HTML 里塞私货。
02|当时最现实的竞争手段,不是讲标准,而是给作者更多按钮
今天的前端已经很习惯说:
Web 平台要讲标准、讲兼容、讲互通。
可在 90 年代中后期那场浏览器大战里,竞争逻辑根本不是这个。
那时候真正有效的武器,常常反而特别粗暴:
“你来我这边,我给你多一点别人那边没有的效果。”
这非常符合市场直觉。
你是浏览器厂商。
你想让更多人装你的浏览器、更多作者偏向你的生态,最快的办法当然不是慢慢等委员会开会。
而是:
- 多加几个标签
- 多给一点表现效果
- 多放一些只有我家能跑出来的页面花样
于是 HTML 这套本来更偏结构化文档的语言,很快就被拿去承载一种完全不同的诉求:
浏览器厂商想用它做市场差异化。
这就决定了后面会发生什么。
因为一旦“多给作者一点效果”变成竞争优势,HTML 就不再只是共享语言。
它会开始分叉。
而且分叉得非常快。
03|<blink> 和 <marquee> 不是网页史笑话,它们是战场遗迹
今天的前端看到这些标签,反应大多差不多:
- 太老
- 太土
- 太不语义化
- 一看就是坏文明
从结果上看,当然没冤错它们。
可如果你把它们放回当年的环境里,它们就不只是“低级写法”。
它们是前线工事。
像:
<font><center><blink><marquee>
这些东西最值得注意的地方,不只是难看。
而是它们共同说明了一件事:
HTML 已经开始被浏览器厂商当成功能投放面板,而不只是内容结构语言。
其中最有象征意义的,当然是 <blink> 和 <marquee>。
一个让字闪。
一个让字滚。
今天看像网页史冷笑话。
可它们当年出现,不是因为谁突然审美崩溃。
而是因为浏览器厂商很快发现:
往 HTML 里塞一个独家能力,是最容易做出“我家浏览器更有意思”的办法。
所以这些标签的历史意义,从来不只是“难看”。
它们提醒你,HTML 已经被从文档语言拖向表现工具箱。
04|“Best viewed in Netscape / Internet Explorer” 不是文案,它是分裂宣言
这一步的后果,比单个标签难看严重得多。
因为当浏览器厂商都开始往 HTML 里塞自己的东西时,HTML 的身份就变了。
它本来应该是一套:
- 大家都能理解
- 大家都能实现
- 大家都能稳定交换内容
的共享语言。
可一旦私货越来越多,它就开始滑向另一种状态:
基础语法还是共享的,关键体验却越来越取决于你站在哪个浏览器阵营里。
这就是为什么后来 Web 上会出现那么多名场面:
Best viewed in NetscapeBest viewed in Internet Explorer
这些话今天看着很土。
可它们当年一点都不只是宣传文案。
它们是在公开宣布那个时代最尴尬的事实:
Web 表面上是一个开放平台,底下却正在被浏览器厂商切成不同体验区。
这时候 HTML 就不再只是一套公共协议。
它慢慢开始像一堆彼此相近、却不完全互通的方言集合。
而方言一多,最先坏掉的不是美感。
而是:
- 互通性
- 可预期性
- 作者对平台的基本信任
05|浏览器大战真正打坏的,不只是页面兼容,还有“标准应该先于市场”这件事
很多人后来把浏览器大战理解成“兼容性不好”的时代。
这当然没错。
但还不够。
它更深的问题是:
它把 HTML 的演进顺序彻底打乱了。
理想顺序本来应该是:
- 社区讨论需求
- 规范形成共识
- 浏览器按规范实现
- 作者基于稳定能力创作
浏览器大战里,真实顺序却常常变成:
- 厂商先加能力
- 作者先拿去用
- 市场先形成依赖
- 标准最后再来收拾
一旦顺序反过来,标准就很难再扮演图纸。
它会越来越像:
战后档案整理员。
它要做的,不再只是设计未来。
它还得处理已经被市场、浏览器、作者共同制造出来的既成事实。
而这件事,会成为 HTML 很长时间里的宿命。
所以浏览器大战留下的最深遗产,不只是旧标签。
它还把 HTML 彻底拖进了一种后面会反复重演的政治结构里:
现实先行,标准补票。
06|这也是为什么表现性标签会变成历史债,而不只是审美黑历史
很多人今天一看早期 HTML 的表现性标签,就会本能地说:
“这说明以前的人不懂结构和语义。”
这当然部分成立。
但如果只停在这层判断,就会低估问题。
这些东西后来之所以变成历史债,真正麻烦的不是它们不够高级。
而是:
它们一旦被市场大规模使用,就不再只是错误,它们会变成平台必须处理的遗留现实。
这才是开放 Web 最头疼的地方。
桌面软件世界里,一个过时功能有时还能直接砍掉。
可在 Web 上,一旦很多页面都靠它活着,浏览器就很难轻松宣布:
“这个东西以后不算了。”
因为你砍掉的,不只是语法。
你砍掉的是:
- 现存页面
- 工具输出
- 教程惯性
- 一整代作者已经形成的写法
所以 <font>、<center> 这些东西后来哪怕在规范里退潮,它们留下来的问题也不会立刻蒸发。
这就是所谓历史债。
不是因为它们多难实现。
而是因为 Web 的兼容性结构决定了:
错误一旦被大规模使用,就会变得很难彻底死掉。
07|HTML 3.2 很像一次停火协议:已经乱成这样了,先把局面稳住
回头看早期 HTML 的版本演化,有一个感觉特别值得记住:
HTML 3.2 更像妥协产物,而不是理想蓝图。
这不是说它没价值。
恰恰相反,它的价值就在这里。
在浏览器大战的氛围里,真正急迫的问题从来不是:
“我们能不能一步到位设计出完美下一代 HTML?”
更现实的问题是:
“眼下这些已经到处在跑的东西,到底能不能先有个相对统一的说法?”
所以 HTML 后来的不少关键节点,看起来都不太像浪漫革命。
它们更像:
- 先止血
- 先对齐
- 先承认现实
- 再谈下一步怎么收
从这个角度看,HTML 3.2 和后来的 HTML5 其实有一层底色是相通的:
不是先问“最理想的未来是什么”。
而是先问:
“已经乱成这样了,我们至少能不能先把局面稳住?”
08|浏览器大战留下的最大教训,是标准不能总是慢半拍
这场大战还有一个特别长尾的后果。
它逼着整个 Web 社区慢慢意识到:
如果标准长期只负责“在后面整理残局”,那它迟早会越来越没有主导力。
因为作者真正会依赖的,总是先能用的东西。
浏览器真正会抢的,也总是先能形成差异化的东西。
一旦标准永远在最后补票,它就很容易变成:
既挡不住私货,也来不及塑造方向。
这也是为什么后来整个 Web 社区会越来越在意:
- 标准速度
- 浏览器一致性
- 测试套件
- 规范和实现的同步关系
换句话说,浏览器大战不只是搞乱了 HTML。
它还让后来的人第一次很清楚地看见:
如果开放 Web 不想被市场份额重新切回封建割据,那标准就不能永远比现实慢很多拍。
而这条教训,最后会一路流到:
- XHTML 为什么会失败
- WHATWG 为什么会出现
- HTML5 为什么会变得那么现实主义
09|浏览器大战把 HTML 从文档语言拖进了平台战争
浏览器大战表面上只是厂商竞争。
可它对 HTML 做的事,要深得多。
它把一门本来更偏向共享文档结构的语言,迅速拖进了市场竞争、作者欲望和平台割据的现实里。
从那一刻开始,HTML 就再也不只是“描述文档”的工具。
它开始变成:
厂商争夺作者、作者争夺表现力、标准组织追着现实补票的共同战场。
而那些后来被我们当成笑话的标签,真正可怕的地方从来不是难看。
而是它们提醒你:
开放 Web 一旦失去统一语言,下一步很快就会失去统一秩序。
编者注(事实核对):文中对浏览器大战总体格局、Best viewed in ... 文化、以及 <blink> / <marquee> 象征意义的概括,主要依据浏览器大战史料与历史回顾文章;对 HTML 3.2 的“停火协议”式理解,则是对当时标准补票性质的叙事提炼,而不是规范标题原话。
关键人物速览
- Marc Andreessen:早期浏览器浪潮中的标志性人物之一。理解 Netscape 为什么会把 Web 往更强表现力方向猛推,绕不开他所代表的那股市场扩张冲动。
- Lou Montulli:网景早期核心人物之一。浏览器大战年代里,很多“浏览器先动手、标准后补票”的气质,都和 Netscape 这条线密切相关。
- Thomas Reardon:微软早期浏览器团队关键人物之一。理解 IE 为什么会把浏览器能力当成市场武器时,可以把他看作微软那一侧的代表人物。
参考与延伸阅读
The History of the Browser Wars
https://thehistoryoftheweb.com/browser-wars/The HTML Tags Everybody Hated
https://thehistoryoftheweb.com/blink-marquis-tag/Browser wars
https://en.wikipedia.org/wiki/Browser_wars