核演進(jìn)與企業(yè)兼容模式解析)
微軟瀏覽器的進(jìn)化史用一句話(huà)概括就是IE 用二十年時(shí)間證明“默認(rèn)預(yù)裝”能迅速統(tǒng)治市場(chǎng)也用同樣長(zhǎng)的時(shí)間證明“不跟隨 Web 標(biāo)準(zhǔn)”會(huì)把開(kāi)發(fā)者逼到崩潰Edge 則是微軟在移動(dòng)互聯(lián)網(wǎng)和開(kāi)源浪潮里重新做的一次選擇。但今天聊這段歷史不是考古。直到現(xiàn)在還有大量企業(yè)內(nèi)部系統(tǒng)只認(rèn) IE 內(nèi)核還有不少人在搜索“IE 自動(dòng)被劫持為什么無(wú)法清除”“Edge 的 IE 模式怎么突破30天限制”“NTKO 控件必須使用 IE 瀏覽器”這類(lèi)問(wèn)題。也就是說(shuō)IE 并沒(méi)有真正離開(kāi)它只是藏到了 Edge 的兼容模式背后繼續(xù)影響著開(kāi)發(fā)者和運(yùn)維人員。這篇文章想把兩條線(xiàn)一起講清楚一條是微軟瀏覽器從 IE 到 Edge 的關(guān)鍵演進(jìn)節(jié)點(diǎn)另一條是這些歷史包袱在今天真實(shí)工作里怎么處理。無(wú)論你是前端開(kāi)發(fā)者、企業(yè)應(yīng)用維護(hù)者還是桌面運(yùn)維很多時(shí)候需要的不是“IE 消失了”這個(gè)結(jié)論而是一套能兼容、能排錯(cuò)、能遷移的完整思路。1. 為什么這段瀏覽器史到今天還有參考價(jià)值1.1 瀏覽器是微軟控制桌面的“入口”在 PC 互聯(lián)網(wǎng)時(shí)代瀏覽器被看作操作系統(tǒng)的延伸。誰(shuí)能決定用戶(hù)打開(kāi)電腦后第一個(gè)看到什么、默認(rèn)用什么上網(wǎng)誰(shuí)就掌握了桌面流量入口。微軟把 IE 綁定在 Windows 95 里就是用系統(tǒng)預(yù)裝的方式快速打贏了和 Netscape 的瀏覽器大戰(zhàn)。那時(shí)候很多用戶(hù)對(duì)“瀏覽器”的認(rèn)知就是打開(kāi)電腦雙擊藍(lán)色小 e直接能上網(wǎng)。這種默認(rèn)入口的威力讓 IE 的安裝量幾乎等于 Windows 的銷(xiāo)量。后來(lái)的很多規(guī)則比如 ActiveX、VBScript、Windows Update 里的瀏覽器更新邏輯都是圍繞著“IE 與 Windows 深度綁定”這一前提設(shè)計(jì)的。理解這一層才能理解為什么后來(lái)很多人想把 Edge 卸掉卻卸不干凈?,F(xiàn)代 Edge 已經(jīng)不是單純的瀏覽器它是 Windows 系統(tǒng)內(nèi)許多應(yīng)用界面渲染的底層依賴(lài)。這個(gè)問(wèn)題會(huì)在第 4 節(jié)展開(kāi)。1.2 技術(shù)會(huì)換代但兼容性債務(wù)不會(huì)自動(dòng)消失從開(kāi)發(fā)者視角看IE 最深遠(yuǎn)的影響不是它曾經(jīng)擁有多少市場(chǎng)份額而是它給全球企業(yè)留下了大量“只認(rèn) IE 行為”的內(nèi)部系統(tǒng)。常見(jiàn)的場(chǎng)景很典型老 OA 系統(tǒng)里頁(yè)面要用 ActiveX 控件才能上傳大文件銀行網(wǎng)站登錄時(shí)要裝安全控件這些控件只有 IE 內(nèi)核能調(diào)用政府或企業(yè)采購(gòu)系統(tǒng)里的 UKey 登錄組件只兼容 IE 的文檔模式一些老頁(yè)面用了 IE 專(zhuān)屬的 CSS 寫(xiě)法或 VBScript現(xiàn)代瀏覽器根本不解析。這也是為什么 Edge 里會(huì)保留一個(gè)叫“IE 模式”的功能。它不是多此一舉而是微軟給整個(gè)行業(yè)留的一條過(guò)渡通道一邊用 Chromium 內(nèi)核跟上現(xiàn)代 Web另一邊繼續(xù)兼容那些改造成本極高的舊系統(tǒng)。所以讀微軟瀏覽器進(jìn)化史最有價(jià)值的判斷是IE 并不是被某一次失敗打敗的而是被 Web 標(biāo)準(zhǔn)的演進(jìn)和開(kāi)發(fā)者的耐心打敗的。Edge 真正改變的不是換了名字而是微軟終于愿意放棄“瀏覽器必須和 Windows 深度綁定地封閉發(fā)展”的執(zhí)念。2. IE 時(shí)代從預(yù)裝壟斷到“前端開(kāi)發(fā)者的噩夢(mèng)”2.1 IE 的誕生與成長(zhǎng)1995 年微軟在 Windows 95 中捆綁了 IE 1.0隨后以極快節(jié)奏發(fā)布 IE 2、IE 3、IE 4。那個(gè)階段的 IE 在功能上其實(shí)追趕得很猛很快加入了對(duì) CSS、動(dòng)態(tài) HTML 等新特性的支持。真正讓 IE 確立統(tǒng)治地位的節(jié)點(diǎn)是 IE 6。它隨 Windows XP 一起大規(guī)模預(yù)裝在很長(zhǎng)一段時(shí)間里絕大多數(shù)普通用戶(hù)和企業(yè)電腦都停留在這一版本。許多企業(yè)軟件也趁這個(gè)時(shí)期選擇了“只兼容 IE6”的開(kāi)發(fā)路線(xiàn)。對(duì) 80 后、90 后前端開(kāi)發(fā)者來(lái)說(shuō)IE6 幾乎是“兼容性噩夢(mèng)”的代名詞。它有很多非常出名的問(wèn)題對(duì) W3C 標(biāo)準(zhǔn)的解析不完整同樣的 CSS 在 IE6 和其他瀏覽器里顯示效果不同PNG 半透明圖片默認(rèn)不支持要寫(xiě)各種 hack盒模型計(jì)算邏輯與標(biāo)準(zhǔn)不一致需要額外處理IE 條件注釋雖然能區(qū)分瀏覽器但也讓頁(yè)面代碼里塞滿(mǎn)了瀏覽器判斷。如果一個(gè)團(tuán)隊(duì)在 2005 年前后維護(hù)過(guò)企業(yè)官網(wǎng)多半經(jīng)歷過(guò)“在 IE 下調(diào)好了在 Firefox 下亂了在 Firefox 下調(diào)好了IE 又亂了”的循環(huán)。2.2 ActiveX 與企業(yè)控件IE 被“焊死”的原因IE 之所以能長(zhǎng)期留在企業(yè)內(nèi)網(wǎng)一個(gè)重要原因是 ActiveX。ActiveX 允許網(wǎng)頁(yè)調(diào)用本地的 COM 組件從而訪(fǎng)問(wèn)讀卡器、UKey、打印設(shè)備等硬件資源。這套機(jī)制在當(dāng)時(shí)的 Web 技術(shù)條件下確實(shí)解決了很多問(wèn)題比如網(wǎng)上銀行需要讀取用戶(hù)證書(shū)內(nèi)網(wǎng) OA 需要調(diào)用 Word 或 WPS 插件大文件上傳控件需要直接操作本地文件系統(tǒng)。這些能力讓 IE 成了企業(yè)系統(tǒng)的“事實(shí)標(biāo)準(zhǔn)”。問(wèn)題在于ActiveX 也帶來(lái)了嚴(yán)重的安全風(fēng)險(xiǎn)和安全提示疲勞。為了讓控件運(yùn)行用戶(hù)往往需要把站點(diǎn)加入“受信任站點(diǎn)”降低安全級(jí)別這又給惡意軟件留下了可乘之機(jī)。今天很多老系統(tǒng)里仍然能看到類(lèi)似的提示“請(qǐng)使用 IE 瀏覽器并檢查瀏覽器的安全設(shè)置?!边@里的“IE 瀏覽器”已經(jīng)不是字面意義而是指“IE 內(nèi)核或 IE 兼容模式”。2.3 IE 6 的代價(jià)瀏覽器升級(jí)變成了操作系統(tǒng)升級(jí)早期 IE 是和 Windows 深度耦合的IE6 之后的升級(jí)往往不只是下載一個(gè)安裝包還涉及操作系統(tǒng)版本、補(bǔ)丁依賴(lài)。許多企業(yè) IT 部門(mén)不敢輕易升級(jí)瀏覽器因?yàn)闆](méi)人能保證老業(yè)務(wù)系統(tǒng)在新瀏覽器里還能正常運(yùn)行。于是出現(xiàn)了一種奇怪現(xiàn)象瀏覽器版本十幾年不升級(jí)頁(yè)面開(kāi)發(fā)只能向下兼容最老的環(huán)境。前端代碼里到處是分支判斷有的專(zhuān)門(mén)判斷 IE6有的判斷 IE7再往上還有 IE8、IE9每一個(gè)版本的盒模型和 CSS 支持程度都不同。前端社區(qū)后來(lái)總結(jié)出一個(gè)共識(shí)IE 的壟斷不是技術(shù)創(chuàng)新帶來(lái)的而是預(yù)裝渠道帶來(lái)的。當(dāng)渠道優(yōu)勢(shì)消失它自己的技術(shù)債就會(huì)立刻反噬。3. IE8、IE11 的追趕、停更與最后遺產(chǎn)3.1 版本分裂讓“支持 IE”成為高成本工作IE8 發(fā)布時(shí)微軟開(kāi)始認(rèn)真向 Web 標(biāo)準(zhǔn)靠攏。它支持了更多 CSS 2.1 特性加入開(kāi)發(fā)者工具也引入了“兼容性視圖”——允許頁(yè)面用舊版本的渲染方式打開(kāi)。但當(dāng)時(shí)瀏覽器市場(chǎng)已經(jīng)進(jìn)入多瀏覽器并存階段。前端開(kāi)發(fā)者要面對(duì)的環(huán)境通常包括IE6、IE7、IE8、Firefox、Chrome、Safari。IE 系列的版本分裂尤其痛苦因?yàn)樗拿恳淮紊?jí)都可能改變頁(yè)面表現(xiàn)企業(yè)內(nèi)網(wǎng)卻沒(méi)法快速統(tǒng)一。IE9 和 IE10 在標(biāo)準(zhǔn)支持上進(jìn)步明顯但它們只支持較新的 Windows 版本無(wú)法覆蓋老系統(tǒng)用戶(hù)。于是很多企業(yè)只能繼續(xù)停留在 IE8 或更早版本以便兼容 Windows XP 環(huán)境。IE11 是 IE 系列最后一個(gè)版本。它的標(biāo)準(zhǔn)支持已經(jīng)好了很多還加入了“企業(yè)模式”允許管理員針對(duì)特定站點(diǎn)啟用舊版本文檔模式。但在生態(tài)上IE 的擴(kuò)展能力和開(kāi)發(fā)者工具已經(jīng)明顯落后于 Chrome 和 Firefox。3.2 IE11 的退役與“自動(dòng)跳轉(zhuǎn) Edge”微軟后來(lái)在多版 Windows 10 中逐步把默認(rèn)瀏覽器切換為 Edge并在接近 2022 年年中時(shí)正式停止對(duì) IE11 的主流支持。對(duì)個(gè)人用戶(hù)來(lái)說(shuō)最直觀的變化是點(diǎn)擊桌面上的 IE 圖標(biāo)后系統(tǒng)會(huì)自動(dòng)打開(kāi) EdgeIE 自身很難再被作為獨(dú)立瀏覽器啟動(dòng)。這個(gè)操作讓普通用戶(hù)覺(jué)得“IE 消失了”。但對(duì)企業(yè)用戶(hù)來(lái)說(shuō)真正的麻煩在于大量?jī)?nèi)部站點(diǎn)還沒(méi)有完成遷移。于是微軟保留了 Edge 的 IE 模式。這個(gè)模式并不是簡(jiǎn)單地把 Edge 換個(gè)皮膚而是用戶(hù)訪(fǎng)問(wèn)指定站點(diǎn)時(shí)Edge 內(nèi)部會(huì)調(diào)用 IE 兼容引擎讓老頁(yè)面以為自己在 IE 中運(yùn)行。這樣既不用安裝單獨(dú)的 IE 瀏覽器又能保證 ActiveX 和舊文檔模式可用??梢哉f(shuō)IE 最后的遺產(chǎn)不是瀏覽器本身而是這套“IE 兼容模式”和大量等待遷移的業(yè)務(wù)邏輯。4. Edge 的兩次重生EdgeHTML 與 Chromium 的選擇4.1 舊版 Edge 為什么沒(méi)有打贏Windows 10 剛推出時(shí)微軟帶來(lái)了全新的 Edge 瀏覽器內(nèi)部代號(hào) Project Spartan。它在微軟的設(shè)想里是“輕量、現(xiàn)代、安全”的 IE 替代品采用自研的 EdgeHTML 渲染引擎。舊版 Edge 的體驗(yàn)確實(shí)比 IE 好很多但有幾個(gè)致命問(wèn)題擴(kuò)展生態(tài)太弱用戶(hù)常用的 Chrome 擴(kuò)展基本用不了更新節(jié)奏和 Windows 系統(tǒng)綁定功能迭代慢早期版本存在不少渲染兼容性 bug部分網(wǎng)站打開(kāi)不正常很多用戶(hù)從習(xí)慣上就不愿意切換。當(dāng)時(shí)微軟的思路還是“自研引擎 系統(tǒng)預(yù)裝”期望通過(guò) Windows 10 的裝機(jī)量帶動(dòng) Edge。但開(kāi)發(fā)者社區(qū)的反饋非常直接如果你想讓我們認(rèn)真對(duì)待你的瀏覽器請(qǐng)先讓它跑得動(dòng) Chrome 的插件并保持快速迭代。4.2 擁抱 Chromium一次承認(rèn)現(xiàn)實(shí)的重構(gòu)微軟在 2018 年底左右宣布新一代 Edge 將基于 Chromium 開(kāi)源項(xiàng)目重構(gòu)。這個(gè)決定在當(dāng)時(shí)引起了巨大討論。支持者認(rèn)為這是微軟擁抱開(kāi)放生態(tài)的關(guān)鍵一步反對(duì)者擔(dān)心最終會(huì)進(jìn)一步強(qiáng)化 Chromium 的統(tǒng)治地位。但從產(chǎn)品角度看這個(gè)選擇非常務(wù)實(shí)。切換到 Chromium 之后Edge 獲得了三個(gè)關(guān)鍵能力與 Chrome 網(wǎng)頁(yè)渲染結(jié)果高度一致網(wǎng)站兼容性問(wèn)題大幅減少直接兼容 Chrome 擴(kuò)展生態(tài)用戶(hù)遷移成本變低更新不再完全跟隨 Windows 版本可以獨(dú)立、高頻迭代。新一代 Edge 大約在 2020 年初開(kāi)始向 Windows 用戶(hù)推送隨后逐漸成為 Windows 10 和 Windows 11 的默認(rèn)瀏覽器。這一次微軟終于不再固執(zhí)于“自研內(nèi)核必須成功”的執(zhí)念。4.3 Windows 7 用戶(hù)與 Edge 109 的邊界因?yàn)樾掳?Edge 基于 Chromium微軟也讓 Edge 支持了 Windows 7、Windows 8 和 Windows 8.1這在舊版 Edge 時(shí)代是做不到的。不過(guò)這些老系統(tǒng)的官方支持總有限期。對(duì)于 Windows 7 和 Windows 8.1 來(lái)說(shuō)微軟支持的 Edge 最終版本停留在 109之后更新的 Edge 版本在這些系統(tǒng)上無(wú)法安裝。很多還在維護(hù)老系統(tǒng)電腦的團(tuán)隊(duì)會(huì)提前下載 Edge 109 的離線(xiàn)安裝包備用避免重裝系統(tǒng)后找不到可用瀏覽器。這件事也提醒運(yùn)維人員版本支持邊界不等于軟件完全不能運(yùn)行而是官方不再保證安全和功能更新。如果用老系統(tǒng)訪(fǎng)問(wèn)互聯(lián)網(wǎng)風(fēng)險(xiǎn)會(huì)隨時(shí)間累積。4.4 為什么“卸載 Edge”不是好辦法很多用戶(hù)在網(wǎng)上搜索“卸載 Edge”“Edge remover”是因?yàn)?Edge 被寫(xiě)入系統(tǒng)后無(wú)法像常規(guī)軟件一樣從應(yīng)用列表里卸載。這里要澄清一個(gè)關(guān)鍵點(diǎn)現(xiàn)代 Edge 和 Windows 系統(tǒng)的綁定很深不僅是“默認(rèn)瀏覽器”還承擔(dān)著 WebView2 運(yùn)行時(shí)等底層能力。許多 Windows 桌面應(yīng)用比如 Teams、部分 Office 組件、甚至第三方軟件的內(nèi)置登錄頁(yè)面都在調(diào)用 Edge 的 WebView2 來(lái)渲染界面。如果強(qiáng)制刪除 Edge 組件短期內(nèi)可能覺(jué)得“系統(tǒng)清凈了”但后續(xù)可能遇到以下問(wèn)題依賴(lài) WebView2 的應(yīng)用無(wú)法顯示界面Windows 更新或系統(tǒng)組件修復(fù)報(bào)錯(cuò)使用第三方“強(qiáng)制移除”工具破壞系統(tǒng)文件可能導(dǎo)致更復(fù)雜的問(wèn)題。更理性的做法是用組策略或 Edge 管理策略隱藏 Edge 圖標(biāo)、禁用部分功能而不是直接刪文件。真正需要優(yōu)先解決的往往是為什么想卸載它——比如被惡意軟件改主頁(yè)、被推廣軟件劫持這些問(wèn)題不會(huì)因?yàn)閯h除 Edge 而消失反而可能在別的瀏覽器里復(fù)發(fā)。5. IE 模式Edge 里兼容老業(yè)務(wù)系統(tǒng)的關(guān)鍵5.1 什么是 IE 模式IE 模式是 Microsoft Edge 提供的兼容能力。它允許用戶(hù)或管理員讓指定網(wǎng)站在 Edge 的標(biāo)簽頁(yè)里使用 IE 的 Trident/MSHTML 內(nèi)核引擎渲染從而支持 ActiveX、舊版文檔模式和企業(yè)級(jí)安全配置。普通用戶(hù)理解起來(lái)可以這樣看打開(kāi)同一個(gè)網(wǎng)址平時(shí)用的是 Chrome 內(nèi)核渲染但如果你把這個(gè)網(wǎng)址加入 IE 模式Edge 就會(huì)在背后切換到 IE 兼容引擎。頁(yè)面可能沒(méi)有任何外觀變化但內(nèi)部 JS、控件調(diào)用方式都已經(jīng)變成 IE 環(huán)境。這個(gè)功能的價(jià)值在于企業(yè)不需要再部署一臺(tái)獨(dú)立的舊 IE 瀏覽器也不用讓用戶(hù)來(lái)回切換瀏覽器。5.2 手動(dòng)啟用與 30 天限制在 Edge 中最簡(jiǎn)單的啟用 IE 模式方法是打開(kāi)目標(biāo)網(wǎng)站點(diǎn)擊地址欄右側(cè)的“...”菜單選擇“更多工具”點(diǎn)擊“在 Internet Explorer 模式下重新加載”。頁(yè)面重新加載后地址欄左側(cè)會(huì)出現(xiàn)一個(gè) IE 模式小圖標(biāo)表示當(dāng)前頁(yè)面已使用 IE 模式打開(kāi)。不過(guò)這里有一個(gè)很容易踩坑的限制對(duì)于未受管設(shè)備用戶(hù)手動(dòng)添加的 IE 模式站點(diǎn)默認(rèn)只保留 30 天。超過(guò)有效期后網(wǎng)站會(huì)重新以 Chromium 內(nèi)核打開(kāi)用戶(hù)又需要手動(dòng)點(diǎn)一次。很多搜索“