微軟官宣IE將“退役”,老網站如何 實現在Chrome、Firefox中兼容運行?

1、 問題

美國微軟公司爲了推廣其Chromium內核的Edge瀏覽器,在2021年5月19日突然宣佈,自2022年6月15日起,絕大多數版本的Windows 10系統將不再支持IE瀏覽器,因此IE即將徹底退出互聯網的舞臺。具體來說微軟決定將不再支持Windows 10所有消費者版本中的IE運行,即使用戶強制啓動IE也會重定向到Edge瀏覽器來打開網頁,類似這樣:

服務器和長期服務渠道(LTSC)的Windows 10版本中雖說暫時不變,但誰也說不清哪天也會被取消支持了。相關詳情可點擊: The future of Internet Explorer on Windows 10 is in Microsoft Edge 和 Internet Explorer 11 desktop app retirement FAQ 查看。

IE誕生於1995年,是Windows系統默認的免費網頁瀏覽器,微軟利用系統捆綁的方式很快就擊敗了當時收費的競爭對手Netscape。在巔峰時期,IE佔據了全球桌面瀏覽器市場90%以上的份額,直到2013年前後谷歌瀏覽器逐漸成爲主流。在這近20年的時間裡,雖然中途有Firefox瀏覽器最高時搶佔了約30%市場份額,但是當時不管哪個網站的發佈都得把兼容IE作爲重頭戲進行測試。而在互聯網發展的歷史進程中,瀏覽器的功能開始時還比較簡單,爲了彌補瀏覽器自身功能的不足和提高網頁中的交互體驗,瀏覽器開發商都提供了非常開放的插件開發接口給第三方調用,其中以IE中的ActiveX控件和非IE中的NPAPI插件最爲典型。第三方公司基於瀏覽器的插件開發接口開發了各種各樣的控件或插件,典型如金融行業網銀系統的安全及讀卡等控件、多媒體領域的Flash Player等網頁播放器,工業設計領域的dwg/dxf等圖紙查看控件,因此各大下載站點類別中還單獨增加了瀏覽器插件軟件。而美國谷歌公司的Chrome瀏覽器爲了搶佔IE的用戶,基於IE開發接口發佈了Chrome Frame插件可將IE網頁改成Chromium內核渲染顯示。爲簡化各瀏覽器的插件開發,國外還誕生了非常有名的跨瀏覽器的開源插件框架FireBreath,底層實現採用的是ActiveX控件和NPAPI插件技術,曾經流行的Java Applet和Unity網頁遊戲引擎底層實現同樣如此,有幾年時間基於這兩個開發的網頁遊戲不僅多,還很火爆,全民半夜網絡偷菜成爲一景。而RIA(豐富型互聯網應用程序)曾經也非常受企業歡迎,Adobe的Flex和微軟的Silverlight作爲RIA開發的兩個典型代表由於門檻低、開發便捷等優勢在企業信息化領域得到了廣泛使用,其實現同樣依賴ActiveX控件和NPAPI插件技術。

然而,這些瀏覽器的控件或插件是否安全、是否穩定好用,完全取決於其開發商,因此時常被別有用心的人或公司利用來散發病毒、植入木馬或偷取敏感信息,導致聯網操作越來越不安全,瀏覽器本身也經常因此失去響應或崩潰。IE瀏覽器不得已增加了多種所謂的安全設置來限制運行ActiveX控件,這又導致體驗差、實施維護難,因爲大多數電腦用戶也不懂得如何修改設置來確保正常運行這些ActiveX控件。如下圖所示:

而谷歌公司在2015年索性宣佈在其後發佈的Chrome瀏覽器直接取消NPAPI插件的運行支持,隨後Firefox新版本瀏覽器也跟隨Chrome不再支持NPAPI插件的運行,從此所有使用了NPAPI插件技術的老網站再也無法在Chrome、Firefox、Opera等高版本瀏覽器中運行,網站提供商大多數就只能退而求其次,需要時只能讓用戶啓動IE訪問。這不,時至今日即使是最有錢的金融行業各大銀行,也沒有解決其網銀系統在Chrome、Firefox等高版本瀏覽器中的使用問題。當用戶在這些瀏覽器中使用遇到兼容性問題時,也只能無奈的告訴用戶,請使用IE瀏覽器,囧。然而現在微軟平地一聲雷,突然宣告IE即將壽終正寢,比如銀行、工商、稅務、教育等老網站大多屬於公共服務及OA、ERP等企業信息化系統還不得不繼續提供服務,這就面臨再無瀏覽器可用的窘境,現在是迫切需要一個具有良好兼容性、穩定性的可行技術方案來徹底解決此問題的時候了。

2、 現有方案

結合當前各方面的信息,現有解決方案大體上有如下幾類:

1. 以不變應萬變方案,繼續當鴕鳥,不升級操作系統和瀏覽器版本,避免無法使用的情況出現。雖然說這樣也不是不可以,但會面臨巨大的安全風險,因爲使用的陳舊操作系統如Windows 7或低版本瀏覽器被發現和公開的漏洞越來越多且無法修復,隨時可能被攻擊或被利用導致業務系統停止運行和丟失敏感數據。況且此方案只適用於企業內部電腦數量少且固定的場景。對於類似網銀這樣爲公衆服務的網站或終端請求電腦數量多又經常變動的網站,用戶的電腦操作系統和瀏覽器版本往往是不可控的,只能儘量主動去適配用戶的電腦環境確保可用,否則每人一口唾沫也會把客服人員淹死。或許你會說讓用戶全部切換用手機APP或傳統桌面客戶端就行了,不再提供桌面網頁版,暫且不說這種躲貓貓的懶政行爲會對企業形象造成巨大傷害,企業網銀的桌面網頁版總不能也取消支持吧,因爲在企業內網中使用桌面電腦的比例比較高,移動端由於屏幕大小所限或安全因素考慮,始終還是少數,而傳統桌面客戶端開發、部署、維護等又是個大麻煩。還有就是業務系統所用的電腦,時間長了可能壞掉或需要增加數量來使用,而這些新購電腦往往安裝的是當前主流的操作系統,說不定哪天就無法降級安裝老版系統來使用了。在2021年1月份就發生了一起因新購電腦自動安裝了被Adobe公司突然停用的Flash Player軟件版本導致大連車務段的現在車系統無法正常使用的事故,引起了廣泛的輿論關注和網民的羣嘲,幸運的是這些新購電腦還能安裝舊版系統降級使用,但問題並未得到根本解決。

2. 採用瀏覽器擴展方案,比如Chrome、Edge等瀏覽器上的擴展程序商店中,可以下載安裝國外開發商提供的IE Tab,但其商業用途是收費的。通過此擴展程序,可以在瀏覽器標籤頁中把某個網頁整體用IE內核渲染顯示,據統計這是在Chrome程序商店中付費用戶最多的擴展,可見需求還挺強烈。不過由於國內的特殊網絡環境,往往無法直接在線下載完成安裝,對普通電腦用戶來說這步就難倒了大多數人。況且商業用途的話,企業內網常常是和外網阻斷的,實施部署非常麻煩,而且網頁需要切換到IE內核渲染時還需要用戶手工點擊一下,體驗還是差了一些,也無法滿足國內自主可控的要求。其售價也不低,因爲是國外開發商,溝通交流存在障礙不說,採購流程也是漫長又繁瑣的。好處是不需要修改網站代碼,可支持主流版本的瀏覽器使用。

3. 雙內核瀏覽器方案,國產典型的如360、QQ等瀏覽器,需要用IE內核來渲染的網頁,可在地址欄右側手工點擊切換內核的閃電圖標來完成重新加載顯示。此方案雖然是免費的,不過代價是終端電腦用戶可能會時常收到廣告彈窗,防不勝防又無可奈何。這些瀏覽器往往也非常臃腫,因爲夾帶了不少和開發商利益相關的私貨功能,另外其內置的Chromium內核版本往往不是最新的,也存在潛在的安全漏洞風險。最大的問題是這些瀏覽器在整個桌面瀏覽器的市場份額佔比低,無法確保70%左右市場份額的Chrome瀏覽器可以正常使用。此方案好處也是不需要修改網站代碼,成本低

4. 微軟官方建議的方案,就是Edge的IE模式筆者作爲這方面的專業人士,在Edge最新的大衆90版本上根據網上的相關教程也沒實踐出如何讓某個網站用IE模式來渲染顯示,諸位看官可出手試試,^_^。其複雜的設置如下圖所示:

這個Chromium內核的Edge瀏覽器,在微軟重金推廣之下,目前市場佔有率也還僅僅是個位數,或許正如微軟自家網頁翻譯服務自動譯爲“邊緣”瀏覽器的意思一直這樣了,想要作爲主要技術方案來實施還是太勉爲其難,而且Edge只能模擬IE 11,在64位系統上Edge的IE模式能否加載32位的ActiveX控件也是未知數,感覺就是不想讓你用起來IE模式,微軟爲了讓客戶改用Edge也是無所不用其極啊。

5. 徹底改造方案,就是將無法在Chrome等瀏覽器中兼容運行的程序模塊,比如ActiveX控件實現的功能改用比如HTML5、WebGL、WebAssembly等新技術重寫。然而理想是好的,現實確是非常無奈的,由於Chrome等瀏覽器越來越收緊其開發接口,太多想要實現的功能很難做到。即使能實現,很可能功能實現不全,另外投入大、週期長,前端網頁代碼需要同步調整,運行性能也是很大的問題。就拿攝像頭的RTSP實時視頻流播放來說,IE中調用ActiveX控件來播放延遲在毫秒級,而在Chrome中只能採用轉碼方案播放延遲在秒級,相差數倍,往往無法滿足安防行業的要求。此外還普遍存在ActiveX控件的調用方和ActiveX控件的開發方不是一家的情況,調用方想要實現替代ActiveX控件功能更是難上加難,而想要開發方公司提供替代組件往往也不可行,開發方失聯或已經關門歇業也不是啥稀罕事。

3、 新方案

綜合對比上述的各種方案,您會發現沒有一個方案是可以令大家滿意的。想要實現一個低成本、兼容性好、高性能、易於實施的自主可控解決方案,需要另闢蹊徑。這個問題的根源還是因爲Chromium等內核的瀏覽器不再支持DLL、ActiveX控件等原生程序的運行,新提供的PPAPI插件技術又因爲太多限制迄今爲止成功案例極少,很快會被取消支持。所以突破點就在於是否能在主流的Chrome、Firefox等瀏覽器之上實現一個通用的外接框架來支持這些原生程序的內嵌網頁運行,並且可以自動響應瀏覽器的各種操作如窗口縮放、窗口移動、窗口關閉、網頁滾動、標籤頁切換等。經過搜索發現有個成熟的半開源國產中間件軟件正好實現了,兼容性還很強,宣稱是一個跨瀏覽器的原生小程序系統,同時提供了前端可自動安裝、升級小程序的可控機制,重點還引入了調用方權限驗證機制,可確保這些小程序的運行安全。這一整套技術方案具有較強的創新性和實用性,開發商還申請了軟件發現專利保護。看到已經有不少公司採用,有的還是上市公司,筆者下載軟件後趕緊聯繫客服開通權限免費試用了下,真的很神奇,運行效果完全和以前NPAPI插件實現的一樣。下面是其實現原理圖

通過簡單的技術分析和其文檔介紹得知,這個就是在瀏覽器之外再搭建了一個和操作系統交互的通道用於支持DLL、ActiveX控件等原生程序的運行,完全不依賴瀏覽器自身的開發接口,這樣就很好規避了瀏覽器升級可能造成技術方案失效的風險。而在瀏覽器中通過HTML5標準中的Web Socket技術和這個pluginok中間件及啓動的原生小程序通訊,實現雙向的命令請求和反饋機制。此方案的難點是要讓外接的程序能夠很好的模擬運行在網頁中,實現內嵌網頁運行的真實體驗,可喜的是我們看到pluginok實現的效果令人滿意,不僅僅支持有交互界面的窗口程序可內嵌運行,也可以對各種硬件設備的驅動DLL進行調用。開發商還發布了VLC網頁播放小程序、桌面微軟Office及金山WPS在線編輯系列小程序等,可以把Word、Excel等程序窗口直接完整內嵌到Chrome網頁中運行。可以看出這個中間件的問世不僅僅是爲解決老網站兼容運行的問題,而且是基於瀏覽器搭建了一個類似微信小程序那樣的小程序生態系統,用於擴展瀏覽器的功能,讓瀏覽器成爲各種信息化系統集成的最佳容器,可徹底解決B/S系統的各種痛點和難點,讓傳統的C/S桌面程序遷移到瀏覽器中運行再無障礙。

具體到兼容老網站的方法,基於這個pluginok中間件提供了兩種方案:第一種就是pluginok中間件搭配其官方發佈的IE控件小程序,可以在Chrome等瀏覽器網頁中通過腳本請求實現局部加載IE內核渲染的網頁,成本低,前端改造小,部署可實現自主可控,這就比IE Tab擴展插件好太多了,當然缺點也是有的,這就是IE瀏覽器自身帶來的了,加載運行時彈警告體驗差、穩定性差、內存佔用高,不想太折騰的老網站建議採用。第二種方案屬於徹底改造方案,徹底拋棄IE內核,將原來的ActiveX控件或DLL等程序模塊,基於pluginok中間件的二次開發接口封裝爲一個獨立進程的小程序來運行。此方案前端改造大些,成本相對高,不過體驗好,性能高,內存佔用低,適合新開工項目採用。這兩種方案都可以直接複用以前的DLL或ActiveX控件,無需其源碼,這就大大節省了開發成本。第一種方案只需要修改網站前端代碼,第二種同時還需要開發一個小程序,不過這個開發還是比較容易的,看介紹提供的是COM組件的友好接口,也可以委託開發,只是多一點成本,至少技術上是完全沒問題的。

4、 總結

一個好的技術實施方案,首先是要滿足客戶的剛性需求,其次是儘量降低採購、開發、實施及維護的總成本,再次是要有良好的兼容性和穩定性,最後需儘量確保技術方案不能因爲操作系統或瀏覽器的升級而失效。本文基於當前最新的技術信息和實踐經驗,給大家提供了基於pluginok中間件的兩種新方案來解決老網站在Chrome等瀏覽器中的兼容使用問題,尤其適用於少改動以避免影響現有業務系統運行的場景,以供大家技術選型參考。