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,所以无需跨平台”

 

 

 

posted @ 2021-11-17 15:09  jiayouliucui  阅读(1301)  评论(0编辑  收藏  举报