ActiveX 是什么,和IE什么關系


在推出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? Other Browsers (activextest.com)

ActiveX的歷史:

Netscape推出了NPAPI,給瀏覽器上打了洞,允許native代碼運行,但是這個接口是很簡陋的,只能用C開發,瀏覽器只負責加載插件,其它一切支持都沒有,要插件自己搞定,作為擴展開發接口顯然遠遠不夠。

Sun推出了JavaApplet,一種用Java開發的瀏覽器嵌入式小應用平台,這個要好多了,起碼有JVM和java api做支撐,開發起來容易多了,而且在Java虛擬機里運行也解決了用戶對安全的顧慮,但是性能又成了問題。

微軟選擇的方案比較折中,ActiveX,它允許運行Native代碼,可以用C++開發,幾乎所有的WinAPI都可以用,甚至某些C++ Framework都能用,比如MFC ATL,在權限驗證上有數字簽名校驗和一些簡單的運行期權限驗證。它選擇了COM作為基礎接口規范,只能和Windows、IE死死綁定,不過微軟家的思路一向是“這個世界都應該用Windows,所以無需跨平台”

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM