利用javascript判断浏览器是否已经安装ActiveX控件和是否禁止运行ActiveX控件

转载 2011年10月19日 10:15:11
 从微软给IE打上SP2以后,当IE在打开一些含有ActiveX控件的网页是,不再像以前那样,弹出提示框,让用户选择是否安装控件;现在默认情况下给隐藏起来,普通用户根本不知道是怎么回事。公司产品同样也遇到这样的问题,唯一的办法就是将控件做成一个exe文件,供用户下载手动安装注册;这样就需要做一个检测,检测要是用户没有安装控件的话就提示用户用户下载安装,要是安装了就直接转到相关页面。想了很多办法,最后找到一种比较合理的解决方式。由于我们现在经常使用的ajax技术,它实际上就是一种com组件,通过接口实现发送请求和获取数据,那么我们要使用ajax,就必定要创建这样一个com组件,所以我们可以从这里入手来解决检测普通控件是否被拦截的问题。

   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;
   }

如何在Web上判断是否已经安装了某个ActiveX控件

1. 用JavaScript检测系统中是否已经安装了某个ActiveX控件 try { var ax = new ActiveXObject("控件名称"); alert("已安装"...
  • huang_xw
  • huang_xw
  • 2012-03-09 21:09:35
  • 10217

如何判断客户端是否安装了指定的ActiveX控件

 如何判断客户端是否安装了某个插件?最常见的就是使用DHTML Behavior中的两个方法:isComponentInstalled但是msdn上有这么一句话:Only Microsoft Inte...
  • cngkqy
  • cngkqy
  • 2006-10-26 16:13:00
  • 2032

JS判断客户端是否已安装ActiveX控件

if(document.all.player.object == null) { alert("请先安装播放器控件!") }
  • zy332719794
  • zy332719794
  • 2016-02-18 10:35:39
  • 1254

关闭是否只查看安全传送的网页内容提示框 和 是否允许运行软件,如ActiveX控件和插件提示框

关闭是否只查看安全传送的网页内容提示框最新编写 爬虫程序,运行程序后,电脑就总是出现下面这个提示框,一遍遍点“是”或“否”繁琐又麻烦。我看得有点不耐烦了。于是就想个办法不让这个提示框总是出来提示。解决...
  • github_35160620
  • github_35160620
  • 2016-09-19 20:35:29
  • 16990

javascript检查插件是否已经在IE和firefox上安装

一、IE检查插件是否安装,通过创建ActiveXObject来实现,提示“ActiveX控件和本页其他部分的交互...”警告这个也说明安装过插件了,但是点击否不会继续new ActiveXObject...
  • hsany330
  • hsany330
  • 2017-06-29 10:34:33
  • 457

登入系统后加载ActiveX控件已被阻止的解决方法

在登入系统之后,系统会自动加载控件,所以浏览器安全级别太高的话是无法加载的,所以要对浏览器进行设置,下面是在加载控件时经常出现的错误,如图5-1和图5-2。   图5-1 ActiveX控件已被阻止 ...
  • w630636065
  • w630636065
  • 2014-02-12 08:38:18
  • 10141

当前安全设置禁止运行该页中的ActiveX 控件 解决方法

当前安全设置禁止运行该页中的ActiveX 控件 解决方法
  • pipi0714
  • pipi0714
  • 2011-04-01 08:12:00
  • 5227

VC检测OCX(ActiveX)控件是否注册并注册

  • 2014年11月05日 09:19
  • 5KB
  • 下载

据说可以将Activex控件在IE中不显示安全提示

 据说可以将Activex控件在IE中不显示安全提示,先收藏,有空再验证。转csdn网友shepherds() 我用的是这种方法:   在classview下,向目录的第一个.h文件(即App启动头文...
  • yls087412
  • yls087412
  • 2006-11-17 16:31:00
  • 2185

如何检查电脑端安装的Flash Activex 控件版本?

方法一:通过控制面板查阅 方法二:在浏览器地址栏中输入官方Flash版本检测网址...
  • boomcode
  • boomcode
  • 2017-04-06 08:11:34
  • 1295
收藏助手
不良信息举报
您举报文章:利用javascript判断浏览器是否已经安装ActiveX控件和是否禁止运行ActiveX控件
举报原因:
原因补充:

(最多只允许输入30个字)