文|三易生活
在智能手機成為當(dāng)下最為主要的個人終端設(shè)備時,盡管大家已經(jīng)越來越習(xí)慣于使用APP,但瀏覽器作為曾經(jīng)帶領(lǐng)用戶接觸互聯(lián)網(wǎng)世界的窗口,也依然還在繼續(xù)發(fā)光發(fā)熱。日前,谷歌、微軟、蘋果和Mozilla基金會共同宣布。將努力提高瀏覽器的互操作性,以確保Chrome、Edge、Safari和Firefox帶來同樣可靠和一致的Web體驗,為此推出了被稱為Interop 2022的互操作性標(biāo)準(zhǔn)。
據(jù)悉,Interop 2022是一個為Web開發(fā)者服務(wù)的通用測試標(biāo)準(zhǔn),其將以“瀏覽器引擎在15個重點領(lǐng)域和3個聯(lián)合調(diào)查中的表現(xiàn)”為不同瀏覽器提供評分,分別為CSS層疊層、色彩空間和功能、C對話框元素、CSS子網(wǎng)格、排版和編碼、滾動條控件、表單控件等。目前,這四方也公布了各自旗下Chrome、Edge、Safari和Firefox的一致性進展,以及具體的兼容性成績。
蘋果方面在WebKit的開發(fā)者博客中透露,“Interop 2022是一個不斷發(fā)展的指標(biāo),由一組自動化測試生成,旨在評估對某些對Web開發(fā)人員最重要的Web標(biāo)準(zhǔn)的支持。Interop 2022將全年不斷更新,顯示瀏覽器工程師修復(fù)錯誤、實施新功能和改進測試的進展”。由此不難發(fā)現(xiàn),目前的主流瀏覽器在兼容性問題“折磨”了開發(fā)者與用戶二十年余年后終于達成一致,要坐下來解決問題了。
“可靠和一致的Web體驗”,其實指的是瀏覽器之間互相不兼容的現(xiàn)象。相信大家或多或少都用過360、搜狗、QQ等瀏覽器,并且這些產(chǎn)品基本都是在IE 6于2006年被評為“有史以來第八糟糕科技產(chǎn)品”后,一到兩年內(nèi)誕生的。而這一批瀏覽器在宣傳推廣時所打出的一個共同的口號就是“雙核瀏覽器”,通常都主打的是兼容IE與Chrome內(nèi)核,可面對老的Web應(yīng)用使用IE內(nèi)核,面向新的網(wǎng)頁則使用Chrome內(nèi)核。
相信很多朋友在使用瀏覽器時,多少都遇到過各式各樣的兼容性問題。比如說,某個網(wǎng)頁在IE上是一個顏色,在Chrome上就變?yōu)榱肆硪粋€顏色,或是網(wǎng)頁的比例發(fā)生了變化;又或者說,許多學(xué)生朋友可能在填報志愿時,就遇到過網(wǎng)站上出現(xiàn)“瀏覽器不兼容,請使用IE11/IE10/IE9瀏覽器訪問”的提示。
而所謂的瀏覽器兼容性問題,是指因為不同瀏覽器對同一段代碼有著不同的解析,所造成頁面顯示效果不統(tǒng)一的情況。為此,解決瀏覽器兼容,也成為了跨瀏覽器開發(fā)的一個核心問題。而Web瀏覽器的架構(gòu),可以實現(xiàn)為一個進程包含多個線程,也可以實現(xiàn)為很多進程包含少數(shù)線程通過IPC通信。但如何做一款瀏覽器,卻并沒有統(tǒng)一的標(biāo)準(zhǔn)。
這一切的根源,其實是在互聯(lián)網(wǎng)早期,也就是上世紀(jì)90年代主導(dǎo)瀏覽器市場的微軟,與負(fù)責(zé)web技術(shù)標(biāo)準(zhǔn)的W3C組織并不是一條心、雙方各自奉行不同的標(biāo)準(zhǔn)所致。要知道,在新興市場形成的早期通常都是建立標(biāo)準(zhǔn)的最佳時機,但當(dāng)時最終的結(jié)果卻是微軟憑借著Windows的超高市占率,讓IE的標(biāo)準(zhǔn)成為了用戶的事實標(biāo)準(zhǔn)。
由于當(dāng)初微軟放棄了進入W3C,導(dǎo)致這一組織在Web技術(shù)標(biāo)準(zhǔn)上空有權(quán)威性、卻基本不存在強制力,而2004年誕生的WHATWG(網(wǎng)頁超文本技術(shù)工作小組),也更是讓W(xué)3C的權(quán)威性大損。早在2004年時,W3C試圖拋棄HTML轉(zhuǎn)向XHTML,導(dǎo)致了蘋果、Opera、Mozilla的不滿,三家甩開W3C建立WHATWG開發(fā)了Web Applications 1.0,也就是現(xiàn)在的HTML 5。
雖然到了2007年W3C接納了WHATWG,并同時將HTML 5作為Web技術(shù)的新標(biāo)準(zhǔn),但W3C也就此失去了制定“標(biāo)準(zhǔn)瀏覽器”的能力。
當(dāng)初微軟不加入W3C,使得后者不采用IE的方案,而在IE掉隊,Chrome與Firefox崛起后,已經(jīng)有大量開發(fā)者基于IE標(biāo)準(zhǔn)開發(fā)了大量的Web產(chǎn)品,讓瀏覽器不得不用兼容模式來解決這一問題。再加上不同瀏覽器采用的內(nèi)核不同,由于缺乏統(tǒng)一的開發(fā)標(biāo)準(zhǔn),以及各大瀏覽器廠商為了凸顯產(chǎn)品的特色,更是使得整個瀏覽器行業(yè)出現(xiàn)了百花齊放的狀態(tài)。
在過去很長的一段時間里,跨瀏覽器開發(fā)、并解決瀏覽器的兼容問題,成為了前端開發(fā)者最為頭疼卻必須要解決的問題。而他們所要面臨的問題,就是開發(fā)者的代碼運行環(huán)境本身并不掌控在自己手中(服務(wù)器端)、而是在客戶端(用戶的瀏覽器),因此也不得不盡一切可能去協(xié)調(diào)各式各樣的瀏覽器。
眾所周知,在PC互聯(lián)網(wǎng)時代,瀏覽器市場有四大內(nèi)核,即微軟IE瀏覽器的Trident內(nèi)核、蘋果Safari和谷歌Chrome的Webkit內(nèi)核、Firefox瀏覽器的Gecko內(nèi)核,以及Opera瀏覽器的Presto內(nèi)核。不同內(nèi)核代表著瀏覽器的渲染引擎不同,而渲染引擎又是負(fù)責(zé)取得網(wǎng)頁內(nèi)容(HTML、XML、圖像)、整理信息(加入CSS樣式等),以及計算網(wǎng)頁顯示方式,然后輸出至顯示設(shè)備的關(guān)鍵。
不同瀏覽器內(nèi)核不同的情況下,渲染邏輯自然也就不一樣,就會導(dǎo)致同一份代碼有的瀏覽器顯示的正常、有的就不正常。例如,不同瀏覽器對HTM標(biāo)記所具有的內(nèi)外邊距屬性就有著不同的定義,對同一個網(wǎng)頁元素重復(fù)設(shè)置多種樣式時、處理優(yōu)先級不一樣,圖片的位置設(shè)置在不同瀏覽器中顯示效果不同等等,都是極為常見的。
目前,業(yè)界最主流的解決方案是“css hack”,而css (層疊樣式表)則是用來表現(xiàn)HTML或XML等文件樣式的計算機語言,是控制網(wǎng)站樣式和布局的關(guān)鍵,也就是大家在瀏覽器上看到的網(wǎng)頁顯示效果,其實就是由css負(fù)責(zé)。由于不同廠商瀏覽器或某瀏覽器的不同版本對css的支持、解析不一樣,就要求開發(fā)者來編寫相應(yīng)的css code。簡單來說就是大力出奇跡,用因地制宜來解決問題。
css hack將壓力拋給了開發(fā)者,為此部分開發(fā)者會在網(wǎng)頁上設(shè)置瀏覽器檢測,針對某些(IE)瀏覽器甚至直接拒絕服務(wù),以至于沒有兼容模式的Edge(Trident內(nèi)核)在遇到網(wǎng)頁檢測瀏覽器時,干脆就聲稱自己是Chrome。顯然這不是一個完美的解決方案,但奈何W3C組織不給力、瀏覽器廠商又各有各的算盤,所以解決瀏覽器之間的兼容性問題也就被束之高閣了。
那么,為什么在移動互聯(lián)網(wǎng)時代、APP已經(jīng)動搖了瀏覽器市場地位的當(dāng)下,谷歌、微軟、蘋果和Mozilla又要攜手來解決這一問題呢?
其實這是因為導(dǎo)致瀏覽器兼容性問題的歷史包袱,現(xiàn)在已經(jīng)不存在了。微軟的IE11以及Edge已經(jīng)徹底“壽終正寢”了,同時Mozilla的Firefox市場份額已不到4%,Opera瀏覽器更是放棄了自己的Presto內(nèi)核、改用Webkit內(nèi)核,并且Webkit內(nèi)核也基本上已經(jīng)一統(tǒng)整個市場了。至于說,谷歌與Opera合力研發(fā)的Blink內(nèi)核,則是Webkit內(nèi)核的硬分叉產(chǎn)物,兩者擁有同一個源流。
換句話來說就是,當(dāng)初瀏覽器兼容性問題的出現(xiàn),是因為瀏覽器廠商太多、瀏覽器內(nèi)核太多,各家的標(biāo)準(zhǔn)讓開發(fā)者無所適從。但現(xiàn)在隨著微軟Edge加入谷歌的Chromium生態(tài)、Firefox式微,以及蘋果Safari圈地自萌,開放的生態(tài)讓Chromium的標(biāo)準(zhǔn)成為了全球開發(fā)者都在遵循的行業(yè)標(biāo)準(zhǔn)。
簡單來說,就是Chromium生態(tài)在事實上已經(jīng)壟斷了瀏覽器市場,只需要4家廠商就可以制定瀏覽器的事實標(biāo)準(zhǔn)了。