文|三易生活
在智能手机成为当下最为主要的个人终端设备时,尽管大家已经越来越习惯于使用APP,但浏览器作为曾经带领用户接触互联网世界的窗口,也依然还在继续发光发热。日前,谷歌、微软、苹果和Mozilla基金会共同宣布。将努力提高浏览器的互操作性,以确保Chrome、Edge、Safari和Firefox带来同样可靠和一致的Web体验,为此推出了被称为Interop 2022的互操作性标准。
据悉,Interop 2022是一个为Web开发者服务的通用测试标准,其将以“浏览器引擎在15个重点领域和3个联合调查中的表现”为不同浏览器提供评分,分别为CSS层叠层、色彩空间和功能、C对话框元素、CSS子网格、排版和编码、滚动条控件、表单控件等。目前,这四方也公布了各自旗下Chrome、Edge、Safari和Firefox的一致性进展,以及具体的兼容性成绩。
苹果方面在WebKit的开发者博客中透露,“Interop 2022是一个不断发展的指标,由一组自动化测试生成,旨在评估对某些对Web开发人员最重要的Web标准的支持。Interop 2022将全年不断更新,显示浏览器工程师修复错误、实施新功能和改进测试的进展”。由此不难发现,目前的主流浏览器在兼容性问题“折磨”了开发者与用户二十年余年后终于达成一致,要坐下来解决问题了。
“可靠和一致的Web体验”,其实指的是浏览器之间互相不兼容的现象。相信大家或多或少都用过360、搜狗、QQ等浏览器,并且这些产品基本都是在IE 6于2006年被评为“有史以来第八糟糕科技产品”后,一到两年内诞生的。而这一批浏览器在宣传推广时所打出的一个共同的口号就是“双核浏览器”,通常都主打的是兼容IE与Chrome内核,可面对老的Web应用使用IE内核,面向新的网页则使用Chrome内核。
相信很多朋友在使用浏览器时,多少都遇到过各式各样的兼容性问题。比如说,某个网页在IE上是一个颜色,在Chrome上就变为了另一个颜色,或是网页的比例发生了变化;又或者说,许多学生朋友可能在填报志愿时,就遇到过网站上出现“浏览器不兼容,请使用IE11/IE10/IE9浏览器访问”的提示。
而所谓的浏览器兼容性问题,是指因为不同浏览器对同一段代码有着不同的解析,所造成页面显示效果不统一的情况。为此,解决浏览器兼容,也成为了跨浏览器开发的一个核心问题。而Web浏览器的架构,可以实现为一个进程包含多个线程,也可以实现为很多进程包含少数线程通过IPC通信。但如何做一款浏览器,却并没有统一的标准。
这一切的根源,其实是在互联网早期,也就是上世纪90年代主导浏览器市场的微软,与负责web技术标准的W3C组织并不是一条心、双方各自奉行不同的标准所致。要知道,在新兴市场形成的早期通常都是建立标准的最佳时机,但当时最终的结果却是微软凭借着Windows的超高市占率,让IE的标准成为了用户的事实标准。
由于当初微软放弃了进入W3C,导致这一组织在Web技术标准上空有权威性、却基本不存在强制力,而2004年诞生的WHATWG(网页超文本技术工作小组),也更是让W3C的权威性大损。早在2004年时,W3C试图抛弃HTML转向XHTML,导致了苹果、Opera、Mozilla的不满,三家甩开W3C建立WHATWG开发了Web Applications 1.0,也就是现在的HTML 5。
虽然到了2007年W3C接纳了WHATWG,并同时将HTML 5作为Web技术的新标准,但W3C也就此失去了制定“标准浏览器”的能力。
当初微软不加入W3C,使得后者不采用IE的方案,而在IE掉队,Chrome与Firefox崛起后,已经有大量开发者基于IE标准开发了大量的Web产品,让浏览器不得不用兼容模式来解决这一问题。再加上不同浏览器采用的内核不同,由于缺乏统一的开发标准,以及各大浏览器厂商为了凸显产品的特色,更是使得整个浏览器行业出现了百花齐放的状态。
在过去很长的一段时间里,跨浏览器开发、并解决浏览器的兼容问题,成为了前端开发者最为头疼却必须要解决的问题。而他们所要面临的问题,就是开发者的代码运行环境本身并不掌控在自己手中(服务器端)、而是在客户端(用户的浏览器),因此也不得不尽一切可能去协调各式各样的浏览器。
众所周知,在PC互联网时代,浏览器市场有四大内核,即微软IE浏览器的Trident内核、苹果Safari和谷歌Chrome的Webkit内核、Firefox浏览器的Gecko内核,以及Opera浏览器的Presto内核。不同内核代表着浏览器的渲染引擎不同,而渲染引擎又是负责取得网页内容(HTML、XML、图像)、整理信息(加入CSS样式等),以及计算网页显示方式,然后输出至显示设备的关键。
不同浏览器内核不同的情况下,渲染逻辑自然也就不一样,就会导致同一份代码有的浏览器显示的正常、有的就不正常。例如,不同浏览器对HTM标记所具有的内外边距属性就有着不同的定义,对同一个网页元素重复设置多种样式时、处理优先级不一样,图片的位置设置在不同浏览器中显示效果不同等等,都是极为常见的。
目前,业界最主流的解决方案是“css hack”,而css (层叠样式表)则是用来表现HTML或XML等文件样式的计算机语言,是控制网站样式和布局的关键,也就是大家在浏览器上看到的网页显示效果,其实就是由css负责。由于不同厂商浏览器或某浏览器的不同版本对css的支持、解析不一样,就要求开发者来编写相应的css code。简单来说就是大力出奇迹,用因地制宜来解决问题。
css hack将压力抛给了开发者,为此部分开发者会在网页上设置浏览器检测,针对某些(IE)浏览器甚至直接拒绝服务,以至于没有兼容模式的Edge(Trident内核)在遇到网页检测浏览器时,干脆就声称自己是Chrome。显然这不是一个完美的解决方案,但奈何W3C组织不给力、浏览器厂商又各有各的算盘,所以解决浏览器之间的兼容性问题也就被束之高阁了。
那么,为什么在移动互联网时代、APP已经动摇了浏览器市场地位的当下,谷歌、微软、苹果和Mozilla又要携手来解决这一问题呢?
其实这是因为导致浏览器兼容性问题的历史包袱,现在已经不存在了。微软的IE11以及Edge已经彻底“寿终正寝”了,同时Mozilla的Firefox市场份额已不到4%,Opera浏览器更是放弃了自己的Presto内核、改用Webkit内核,并且Webkit内核也基本上已经一统整个市场了。至于说,谷歌与Opera合力研发的Blink内核,则是Webkit内核的硬分叉产物,两者拥有同一个源流。
换句话来说就是,当初浏览器兼容性问题的出现,是因为浏览器厂商太多、浏览器内核太多,各家的标准让开发者无所适从。但现在随着微软Edge加入谷歌的Chromium生态、Firefox式微,以及苹果Safari圈地自萌,开放的生态让Chromium的标准成为了全球开发者都在遵循的行业标准。
简单来说,就是Chromium生态在事实上已经垄断了浏览器市场,只需要4家厂商就可以制定浏览器的事实标准了。
评论