知乎上有不少人問:“如何評價(jià)谷歌瀏覽器禁止運(yùn)行Flash?" 針對這個(gè)問題,本文作者羅志宇,混跡Opera瀏覽器十年的CTO,他從瀏覽器插件發(fā)展的歷史告訴你,這只是一個(gè)美麗的錯(cuò)誤。以下這種框,想必很多人都看到過了:
事情的起因還需要追溯到2013年,Google 突然發(fā)了一個(gè)通告,說是Chrome瀏覽器會(huì)逐步的去掉對NPAPI插件的支持。這個(gè)事情很快就過去了,因?yàn)镹PAPI這種江湖黑話太不親民了,這個(gè)東西到底有啥卵用,廣大人民群眾也并不清楚。關(guān)于谷歌公告,可以點(diǎn)擊這里查看。
但是其實(shí)蠻重要,因?yàn)槌薐ava以外,大家喜聞樂見的Flash,也是NPAPI插件。
時(shí)間已經(jīng)到了2015年,這次可不是說說而已了, Google 正式推出時(shí)間表:
2015年1月開始,除了非常流行的NPAPI插件,其他一律屏蔽;
2015年4月開始,所有的NPAPI插件默人都是關(guān)閉的,用戶需要在高級設(shè)定中手動(dòng)打開;
2015年9月,所有基于NPAPI的插件無法使用,不管你是 Java, 支付寶,或者是 Flash,或者百度云。
其他瀏覽器廠商,比如Opera,火狐,也紛紛表態(tài)會(huì)逐漸淘汰NPAPI。
Opera:我早就說了啊
火狐:我還是會(huì)支持的,只是大家要一起來淘汰這個(gè)技術(shù)。
但是,NPAPI到底是什么?
NPAPI全稱叫 Netscape plugin API, 聽到這個(gè)名字是不是有時(shí)光倒流的感覺, 沒錯(cuò),就是那個(gè)當(dāng)年被微軟一棒子打死了好多年的 Netscape 瀏覽器發(fā)明的一種擴(kuò)展瀏覽器的方式。
是不是覺得好拗口? 沒辦法,我們要從瀏覽器插件本身開始說起。
HTML 作為在瀏覽器里面承載展現(xiàn)內(nèi)容的規(guī)范, 設(shè)計(jì)起來其實(shí)非常困難。 太簡單沒法用,太復(fù)雜了瀏覽器廠商實(shí)現(xiàn)起來又有困難。 一開始的時(shí)候HTML只是設(shè)計(jì)用于承載圖片,文字一類的主流內(nèi)容。不過瀏覽器廠商很快就不滿意了,因?yàn)槌藞D片文字以外,很多小眾內(nèi)容,瀏覽器用戶實(shí)際上是有需求的。 比如,PDF文檔,以及視頻,音頻。
為了解決這些問題而去要求 W3C 把相應(yīng)的內(nèi)容加入到 HTML 標(biāo)準(zhǔn)里面是很不現(xiàn)實(shí)的,標(biāo)準(zhǔn)的制定非常繁復(fù),周期也非常長,小眾內(nèi)容到底有沒有必要加入 HTML 規(guī)范,這種哲學(xué)問題一旦討論起來誰都不知道啥時(shí)候能結(jié)尾, 于是瀏覽器廠商們發(fā)明了插件這樣一個(gè)機(jī)制, 這樣如果有一些內(nèi)容不被 HTML 直接支持,用戶又確實(shí)有需要,那么這部分內(nèi)容就可以用插件來處理。
所以,插件本身對互聯(lián)網(wǎng)的發(fā)展,是有重大貢獻(xiàn)的, 沒有插件,很多新的內(nèi)容,比如視頻,比如向量游戲(Flash), 可能早就胎死腹中了。
W3C (萬維網(wǎng))非常識相地很快就把插件機(jī)制正式納入到 HTML4 標(biāo)準(zhǔn)里面。 W3C 畢竟不是一個(gè)強(qiáng)力部門,它更像各大瀏覽器廠商背后妥協(xié)的產(chǎn)物。
不過按照W3C的哲學(xué),插件畢竟只是對 HTML 的一個(gè)補(bǔ)充。而一旦某些插件提供的內(nèi)容由于市場原因反而變?yōu)橹髁?,那?W3C 就會(huì)馬上將其納入到 HTML 規(guī)范中去,讓瀏覽器原生就支持。