Webkit 瀏覽器前綴傷害了 web 技術的進步嗎?

最近有很多關於這個的討論,一方的觀點是:瀏覽器前綴(特別是 -webkit)傷害了互聯網,使狀況又陷入到了開發者們只支持一種瀏覽器,不考慮其他的情況;另一種觀點認為標準制定者的低效才是更大的問題。
CALL FOR ACTION: THE OPEN WEB NEEDS YOU *NOW http://www.glazman.org/weblog/dotclear/index.php?post/2012/02/09/CALL-FOR-ACTION:-THE-OPEN-WEB-NEEDS-YOU-NOW
Web Standards http://dcurt.is/web-standards


受邀回答。

從實際情況來看, -webkit- 前綴確實導致了問題,並且有可能傷害 Web 標準。

這並不是WebKit的錯,實際上這樣的事情也會發生在IE上。或者可以這樣說,某個領域的主導者其私有特性成為「事實標準」是一件非常自然的事情。

乍一看,這似乎是一個無解的問題。但是實際上要解決這個問題也是非常簡單的,那就是——強迫開發者使用正確的方式。最最有效的,就是所有browser vendor達成一致,當某個CSS屬性prop達到標準後,不僅要支持該屬性,而且要取消對於-prefix-prop的支持。當然這樣會破壞兼容性,但是-prefix-本來就是實驗性的特性,廠商並沒有許諾開發者會保持此兼容性。只要所有廠商都遵循這個policy,就能引導開發者正確使用前綴,真正發揮-prefix-的作用而避免其帶來的副作用。


現在唯一的問題是,WebKit願不願意做出這個犧牲(相對其他廠商來說)。如果WebKit願意,則其他廠商沒有理由不follow這一policy。


【Update】 另外一些提案:如將-vendor-前綴一律改為-x-,然後用media query來查詢browser engine。這樣就增加了用vendor特性的難度,強迫開發者寫通用的CSS,只針對少量情況寫vendor specific的。


@賀師俊 的解決方案更偏於理想化 ,我單開一貼簡述我的觀點。

實際情況下,標準的達成需要一段不可預測的時間長度,即使成為標準,或許也與最初的設想有些許差異,webkit 標準與 w3c 標準不能完美的相互映射。比如 w3c 對 css 漸變並不是面面俱到的規範之,webkit 是第一個支持 css 漸變的瀏覽器內核(可以理解為谷歌自己有網頁需求並且有自己的瀏覽器,有需求便實現),但 mozilla 和 webkit 對規範有不同的理解,導致後來語法實現上有差異,多數的意見是 mozilla 的寫法更優雅一些, 隨後 webkit 對漸變語法進行了優化更新,採用了 mozilla 的標準。這種情況下瀏覽器按照「接收時開放,發送時保守」的原則需要保證以前使用 -webkit- 前綴的頁面正確顯示,「實驗性的特性」、「不保證以後的兼容性」話可以這麼說但事不能這麼絕情做,開發人員擔心私有前綴的後續兼容問題,在使用上會畏首畏腳。Chrome1 支持這個私有前綴 Chrome2 不支持,已完成的項目如果沒有後期維護,用戶不會升級。

對壟斷的恐懼更多的源於技術的不更新,對 IE6 的陰影更多的是他對網頁技術發展反應遲鈍,IE6 的 bug 顯而易見,技術上修復很容易,難點是微軟放出了補丁也無濟於事。升級IE需要重啟電腦,這成本太高。同樣我不喜歡 safair,不是技術領先不領先的問題而是不靈活,跟系統這樣重量級的東西綁的太近。我不太擔心 webkit 的「壟斷」,瀏覽器是一款互聯網入口軟體,而現在世界是互聯網公司的不是 PC/軟體公司的。


半隻腳在棺材裡的IE6痛哭失聲不能自已……

非標準專用標籤的存在,也沒傷害誰,只是體現了一個很可笑的人類行為:一面批判某些廠商不標準,一面萬分期待某個廠商能夠一統天下。

顯然,這種期盼既不是出於公平正義,也不是基於發展的理性思考,僅僅是被宣傳洗腦後站了隊,就以為掌握了真理。

憑什麼現在不能提IE6呢?說不能提,不如說怕提,因為一旦提了,就折射出標準說辭的荒謬和可笑。前端開發者們齊心協力配合Webkit陣營踩翻了IE,就為了今天支持「-Webkit」?


這是典型的因果倒置。事實上,正是由於 web 技術在標準化過程中進展緩慢,拖了技術進步的後腿,谷歌之類的瀏覽器廠商才引入了 -webkit 之類的前綴,使得自己能夠超前標準的實現一些特性。

但是現在大家越來越多的使用前綴,導致 web 又陷入跨瀏覽器兼容性泥潭,恰恰再次印證了標準化的緩慢程度和應用領域對這些特性的強烈需求之間的矛盾。

所以,解決眼下問題的根本在於加快標準化進程,而不是責怪前綴本身。


那要看是誰了
IE用的話,是不可饒恕的罪過
safari chrome用的話,就是天人合一的進步啦


在一個類似問題逗機靈被摺疊了,換個地方認真回答一下

首先回答問題:
至少目前來看webkit前綴是沒有傷害web技術進步的,反而起到了促進作用。

不得不承認css的低層化是開發趨勢。從css3開始很多原本樣式的控制從js上被分離出來,不乏::checked偽類被大家挖掘出更多的玩法,而相對js來說及其落後的編輯環境是目前前端面臨的問題之一。於是就有人開始了less/sass這樣的編譯工具提供更完善的方案。我們完全可以忽略各種前綴,跨語法的自由開發。
發現問題了么?,當我們在一個完善的開發環境中,規範的滯後不是根本問題,作為一個開發者我只要關心我的代碼實現了怎麼樣的效果就可以。甚至於因為webkit前綴的出現,我可以優先於規範嘗試新技術。

再來我們分析一下狀況
為什麼會有瀏覽器前綴這種畸形的規範出現?按照我的個人理解是w3c沒有執法權,工程師想要先進的玩具,規範出的又慢又不靠譜,當然是自己造輪子實現。我是根據你的圖紙加工的,但你不能監督我的加工過程不能審查我的產品成果,當然瀏覽器前綴這種時代的產物就必然要出現。

既然不能阻止他出生,那至少減少他的損害
那最重要的一點,他的影響到底有多大?又或者說webkit前綴會用什麼方式傷害web技術的發展?
很多人說這是另外一個ie6 偉大 自私 還帶著滿身晦氣,縱觀前端的開發史就會發現6爺造成的影響不過是滄海一粟,反而促成了一個新web時代的降臨,沒錯至此之前,甚至今日某些朋友還會因為6爺的臭脾氣而抓狂(比如一隻特立獨行的豬由注釋造成的換行bug)然而最新的技術已經完全放棄ie6了
我要說的是連webkit的老前輩ie6造成的影響也不過如此,又談何傷害技術阻礙發展呢?

再回頭看看前端的發展速度
從jquery到angularjs 從頁面script標籤到require 從手動管理到grunt
如此可怕的更新速度,你們真的覺得兼容才是正確的么?

很簡單的問題
一個兩年前的網站現在再看是否還能被用戶正常使用呢?


Webkit 沒有傷害技術,阻礙 Web 技術進步的是某些

一邊罵著某些公司不支持標準(是不是事實先不論)一邊用著 webkit 的非標準技術且不願意用標準技術代替非標準技術且鼓吹 webkit 是標準僅僅因為它是標準 de facto

的人,他們揮舞著標準大旗來宣傳自己的陣營。

至於說標準制定者過於低效的,相對於一個非標準組織來說,當然是這樣的,因為標準的制定要考慮很多東西,兼容性是最為重要的,非標準組織可以這天定一個這樣的特定,那天再把它 deprecated 掉,並聲稱第二天開始 deprecated 從 warning 變 error。


無論是指責標準化進程太慢的答案,還是指責廠商破壞標準化的答案,都默認了vendor prefix是「不好」的。
恰恰相反,vendor prefix是一個健康的標準化過程中關鍵的一環。
標準化有兩種典型模式。一曰「閉門造車」,即先制定標準,此時最多有原型級別的實現。然後等待廠商做工業級實現,然後推廣應用,並在此過程中發現標準的各種不利於實現和應用的問題。而標準本身,根據定義,此時就難以修正。
一曰「事後追認」,即基於某個或某幾個廠商已經實際使用的實現,根據現實經驗加以完善和標準化。廠商在標準之外的創新,是這種模式必需的原材料。
歷史上,前一種模式產生的標準,屢屢失敗。


假如某個瀏覽器已經支持了W3C的標準屬性命名方案,的確沒有意義再去兼容私有屬性。
不過站在我們開發者角度來看,無論最新瀏覽器是不是要保留私有屬性的兼容,我們始終都要把所有屬性命名方案全部寫一遍,這個周期會非常長,可能10幾年都不過份。
要想只寫一個W3C標準屬性名稱,除非所有歷史舊版瀏覽器全部進入墳墓。


不會
市場經濟的規律決定了,當市場中一件事情的受益超過成本的時候就會有人進入。當某一天web developer們都不堪這些非標準化的前綴時,就會有人著手解決這個問題。可以看到目前已經有不少的工具在做這件事情,但做得還不夠徹底。因為動力不足,就算有那麼一丟丟兼容性問題,找幾個有經驗的碼農也能解決得很好。你看看那些稍微有點規模的互聯網企業,他們的網站不論在哪種平台哪種瀏覽器上的體驗都不算差。Web還在發展,總有一天在利潤的驅使下,邪惡的資本家們會解決好這個問題。當然不排除另外一種可能性,還沒有等到那一天,Web技術就已經過時。

IE6這個老梗就不要再拿出來說了吧。當初某標準化組織,非要把標準制定成不能兼容全世界90%的瀏覽器,坑害了無數後來人。IE6這個老兵,雖然不死,但讓他慢慢凋零吧。


webkit代表先進生產力. 要其他亂七八糟的瀏覽器沒啥用了


原意是為了區分標準和私有,不過這樣做確實讓寫代碼的麻煩很多,假如有三種前綴:-webkit- -moz- -ms- 同樣的屬性卻要寫三次。如果將來納入標準,要不要廢棄掉帶有前綴的屬性也是個問題,廢棄了,以前寫的那些樣式就無效了,不廢棄,就等於存在倆種方式... 倒不如一開始就不帶前綴。


不會傷害web的進步,但是卻會傷害web標準制定者的進步。

web標準制定者:我才是正統的!!!!
前綴:是你跟不上時代的潮流了。


-webkit-成功讓ie體驗到了因為它導致其他內核瀏覽器所體驗到的東西,至於嫌-webkit- -moz- -ms- -o-寫的煩的難道你們不會用工具自己加么?less scss不用,一個小程序也能解決問題啊。。。實習生就算了


如果有另一個比-webkit做得更好、市場支持度更大的前綴,再來討論這個問題差不多。
說實話,真心希望webkit一統天下,直到消除-webkit前綴,統一規範。別老拿10年前的IE6說事。
尤其是做移動端,-o,-moz皆可無視。


推薦閱讀:

TAG:CSS | 網頁瀏覽器 | 萬維網聯盟(W3C) | Web 標準 | 瀏覽器兼容性 |