微软带头打了30年,这场屏幕里的大乱斗,

刘军连怎么挂号 http://baijiahao.baidu.com/s?id=1707688667255876648&wfr=spider&for=pc

最近有这么一条新闻~

苹果、微软、谷歌和Mozilla这几大浏览器制造商宣布将要联合起来,解决网页适配问题了。

由于这个“联合军”几乎包括了所有主要的浏览器供应商,随着他们的协作,程序员们的工作将大大减少,而网民们也将拥有更舒适、统一的浏览体验。

像下面这样一些比较奇怪的页面效果,将不复存在。

畸形的图像显示(左图)↓↓

很不对头的动画效果↓↓

不按预期出牌的粘性表头↓↓

之所以不同网站在不同浏览器上的显示或互动效果不同,是因为不同的浏览器对同一段代码有不同的解析。

如果网站不针对不同浏览器做适配,那用户体验就会直接爆炸。。。

其实,为了解决不同浏览器各自为营导致的兼容、适配问题,从浏览器诞生之初,各个巨头就没少折腾。

其中非常有趣的一件事情,是由微软掀起的,俗称UA大混战的“战役”。

今天咱们就来聊聊这个~

几乎所有的浏览器,UA开头都是Mozilla▼

在正式开始之前,别急着问UA是啥,先听一个小故事。

约30年前,第一次“浏览器世界大战”时,微软跟Netscape杠上了。

Netscape,即大名鼎鼎的网景,他们的浏览器名为网景导航者(NetscapeNavigator),内部代号为Mozilla。

就像大家现在看到IE浏览器的图标会想到上网一样,当年大家上网不说上网,而是说上网景。

因为当时的网景整了很多创新之举,比如搭载Cookie、支持JavaScript脚本以及Frames技术,功能非常强大,饱受网虫欢迎。

就Frames技术来说,它使得浏览器窗口能同时显示多个网页,每个Frame里可以放一个网页,网页相互独立。

放到今天,大家看起来肯定感觉:就这???

但在互联网早期,网页基本上就是一行行的字跟简单的图片构成的。像下图一样。

相比之下,Frames赋予了网页更强大的实用性、便捷性,瞬间流行了起来~

正是因为前述不同浏览器之间巨大的特性差异,用夸张手法来说,网景都支持像Frames这样的高级特性了,有的浏览器可能连图片显示都还没支持。

对于网站来说,给不支持Frames的网站,返回带Frames的页面显然是不合适的。

于是,UserAgent嗅探诞生了。

UA是什么东西呢?

UA就是浏览器的“身份证”,上面有浏览器的身份信息,把它递给网站,网站就知道你是谁,能做啥(比如能不能显示图片),然后给你返回对应的网页。

比如下面是一个Netscape的UA,网站看到Mozilla/1.0就知道浏览器跟浏览器的版本号,看到后面的Win3.1就能知道相关操作系统。

Mozilla/1.0(Win3.1)

UA识别到这是网景浏览器以后,网站服务端表示,卧槽这个浏览器很厉害啊!我要给他发一个高级的页面。

如果是其他浏览器,那网站服务端就会发一个普通的页面过去,毕竟,万一发去高级的,它不支持怎么办?

当时的微软已经是大公司了,手底下有一批优秀的软件工程师专门做IE浏览器,很多功能并不比网景落后,像Frames这些IE也有。

IE1.0▼

但很可惜,IE当时还是一个“新生儿”,尽管它支持高特性的网页,但网站却没有给IE做适配,给它返回的是普通网页。

可是IE已经等不及了,它迫切的提想要打败网景,夺下这片市场,所以它决定——来骗。

你不是通过识别UA来判断返回什么网页么?好,那我就披一层网景的衣服,假装是网景,骗你给我高特性的网页!

靠着种种手段,比如捆绑销售,IE的占有率节节攀升,到IE4.0的时候,微软基本上是把网景打趴下。

IE4.0▼

但网景也没有完全认输,在被收购之前公开了源代码,还用最初开发代号Mozilla创建了Mozilla组织。

火狐浏览器就是这个组织的产物。

为了跟之前的网景浏览器相区分,火狐在之前UA的基础上,加入了自己的标识:Firefox。

同时Mozilla还写了一个叫Gecko的排版引擎,这个渲染引擎非常厉害,火狐也把它加入到了自己的UA之中。

跟前面一样。。

网站也知道用Gecko引擎的浏览器会比较厉害,花活比较多,于是会为它准备更高级的页面,为其他浏览器准备普通页面。

其他浏览器也很苦恼,从技术层面我们明明也能实现这些,只是网站没给机会,于是也开始伪造“身份证”。

戏剧性的一幕出现了:所有浏览器都开始伪装自己是Mozilla。

首先是Linux的追随者,他们编写了Konqueror,引擎是KHTML。

这群人认为KHTML跟Gecko一样好,但是网站却不给他们返回好的页面,于是开始伪装自己,还在UA里写下我们跟Gecko一样好~

UA=Mozilla/5.0(


转载请注明:http://www.aierlanlan.com/rzdk/2570.html