利用javascript判断浏览器是否已经安装ActiveX控件和是否禁止运行ActiveX控件
Posted on 2010-03-01 15:36 Sun_Blue_Sky 阅读(803) 评论(0) 编辑 收藏 举报javascript创建ActiveX控件方式如下:
function DetectActiveX()
{
try
{
var comActiveX = new ActiveXObject(控件名称);
}
catch(e)
{
return false;
}
return true;
}
只要控件已经安装,那么创建肯定会成功(如果IE设置为禁用ActiveX则会失败),如果控件没有安装则会失败。这是一种简单的检测方式。那么控件名称怎么知道呢?大家在写一个com组件的时候,都有一个对应的CLSID。打开自己的注册表(自己系统中已经安装了控件),在HKEY_CLASSESS_ROOT中查找,输入控件对应的CLSID,会在该目录下的一个叫CLSID的目录中找到对应控件的注册信息,打开该节点,其中有一项是ProgID,其对应的值就是创建该控件时所要用的名称,这样你就可以方便创建和检测你自己所设计的控件了。
由于IE不允许javascript访问系统功能,所以我们不能够对IE的相关设置做一个直接的访问,那么根据我们上面的检测试试,我们可以轻松的判定IE是否禁止运行ActiveX控件,这也是非常有用的一点,因为很多提示我们可能要提示用户由于什么什么原因,而导致不能使用某项ActiveX控件的功能。那么我们如何来进行判断呢,还记得我刚开始提到的ajax这个东西吧,这个东西不仅能带来更好的用户交互功能,同时也能够用在我们检测浏览器是否禁止运行ActiveX 控件目的上来。因为ajax是由相关的com组件支持,不管是IE,Firefox,Netscape,Opera等其他浏览器,都有相应的实现,因为了是浏览器的标准。所以我们只要写一个通用的,支持各种浏览器创建ajax 所要用到的xmlhttp对象即可,如果能创建成功,那么证明IE一切OK,如果不成功则给出提示,其检测函数相信大家已经再熟悉不过了,只不过我们现在的目的不一样了,呵呵。
function DisActiveX()
{
//xmlhttp对象
var kXmlHttp = null;
try
{
//非微软IE支持的xmlhttp对象
if (typeof XMLHttpRequest != "undefined")
{
kXmlHttp = new XMLHttpRequest();
return true;
}
}
catch(e)
{ }
//微软IE支持的xmlhttp对象
var aVersionhs = ["MSXML2.XMLHttp.5.0",
"MSXML2.XMLHttp.4.0",
"MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp",
"Microsoft.XMLHttp"];
//IE创建方式
for (var i = 0; i < aVersionhs.length; i++)
{
try
{
kXmlHttp = new ActiveXObject(aVersionhs[i]);
return true;
}
catch(e)
{ }
}
return false;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· [AI/GPT/综述] AI Agent的设计模式综述