喜马拉雅|四大浏览器巨头联手,兼容性终于不再是问题( 二 )


在过去很长的一段时间里 , 跨浏览器开发、并解决浏览器的兼容问题 , 成为了前端开发者最为头疼却必须要解决的问题 。 而他们所要面临的问题 , 就是开发者的代码运行环境本身并不掌控在自己手中(服务器端)、而是在客户端(用户的浏览器) , 因此也不得不尽一切可能去协调各式各样的浏览器 。

众所周知 , 在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家厂商就可以制定浏览器的事实标准了 。