在推出25年多以后,IE瀏覽器終於要退役了。 據外媒報道,微軟決定自2022年6月15日起,讓IE瀏覽器徹底退出互聯網舞台,並全面改用Microsoft Edge瀏覽器。 關於IE的歷史可以參考這篇文章 微軟:別再使用IE瀏覽器了!! - 知乎 (zhihu.com)
對於一個BS網站的開發者來說,我們最關心的是,IE退役將給我們帶來什么樣的影響?
周一上午領導找我說,IE今年年底微軟不再支持了,你看看咱們項目中有什么功能是依賴IE的?
1.前端不會受影響,專門寫的兼容IE的樣式或者js只能算作冗余,也不是bug,可以不理會;
2.百度發現:ActiveX控件是只支持IE的,這個得特別關注,有點懵,不了解。一頓亂搜之后,腦袋有點脹。
靜靜之后,梳理思路,還是從問題下手,搞清楚他是個什么東西,在項目中怎么使用,這才知道怎么找出ActiveX的引用。
1、ActiveX 是什么東西? 是用c++開發的可以運行Native代碼的控件,安裝到IE瀏覽器的加載項中。由於可以運行Native Code所以給客戶端用戶帶來很大的安全隱患。
2、ActiveX用來干什么?實現一些額外的功能,如播放視頻,音頻,動畫,以及讀取其他特定的文件等
3、為什么其他瀏覽器不支持加載ActiveX? 因為其安全問題,其他瀏覽器更易於使用java applets 相對安全
ActiveX 是IE獨有的控件, 微軟的初衷是可以自動下載帶有數字簽名的ActiveX控件,不過並非所有的開發者都會申請數字證書,用戶通過調整瀏覽器安全級別,瀏覽器可以自動下載ActiveX,因此帶來了很多安全問題。
Chrome、Firefox和其他瀏覽器使用插件和擴展來完成ActiveX控件的功能
4、IE退役,如何找出我們項目中ActiveX的調用?
BS項目中ActiveX在瀏覽器調用的語法:
加載ActiveX的前端代碼 <object id='myObj' classid='clsid:sdfasfasdf' ></object>
clsid對應的值可以在IE瀏覽器-管理加載項-工具欄和擴展中 找到你安裝的ActiveX控件,雙擊顯示的相信信息中 類ID對應
HTML <object>
元素(或者稱作 HTML 嵌入對象元素)表示引入一個外部資源,這個資源可能是一張圖片,一個嵌入的瀏覽上下文,亦或是一個插件所使用的資源。
MDN原文:請記住,大多數現代瀏覽器已經棄用並取消了對瀏覽器插件的支持,所以如果您希望您的網站可以在普通用戶的瀏覽器上運行,那么依靠 <embed>
通常是不明智的。
參考:Why doesn't ActiveX work for Google Chrome and Mozilla Firefox?
ActiveX的歷史:
Netscape推出了NPAPI,給瀏覽器上打了洞,允許native代碼運行,但是這個接口是很簡陋的,只能用C開發,瀏覽器只負責加載插件,其它一切支持都沒有,要插件自己搞定,作為擴展開發接口顯然遠遠不夠。
Sun推出了JavaApplet,一種用Java開發的瀏覽器嵌入式小應用平台,這個要好多了,起碼有JVM和java api做支撐,開發起來容易多了,而且在Java虛擬機里運行也解決了用戶對安全的顧慮,但是性能又成了問題。