从微软给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;
   }

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

  1. javascript判断浏览器和终端类型,js如何区分手机、电脑终端和浏览器

    判断浏览器类型 复制代码代码如下: if ( window.sidebar && "object" == typeof( window.sidebar ) & ...

  2. JavaScript判断浏览器类型及版本

    JavaScript判断浏览器类型及版本 你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器. 几天前,浏览器家族有 ...

  3. JavaScript判断浏览器类型及版本(新增谷歌的Chrome)

    来源:http://blog.tripdev.com/?tid=164 JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本.JavaScript ...

  4. JavaScript判断浏览器Flash Player信息

    今天研究了点Flex技术,做了一个小的Demo,在测试时发现经常报错,网上一查发现是浏览器Flash Player版本较低造成(需要10及其以上的版本)的,对此总结了一下借助JavaScript脚本判 ...

  5. html判断是否在微信里打开,JavaScript判断浏览器内核,微信打开自动提示在浏览器打开...

    微信会屏蔽 URL 自定义的 scheme ,导致无法跳转手机中的浏览器.网上有一些工具类网站可以实现直接跳转浏览器,之后有机会我会整理一下.我们今天只讨论通过 JavaScript 判断是否在微信浏 ...

  6. JavaScript判断浏览器内核,微信打开自动提示在浏览器打开

    微信会屏蔽 URL 自定义的 scheme ,导致无法跳转手机中的浏览器.网上有一些工具类网站可以实现直接跳转浏览器,之后有机会我会整理一下.我们今天只讨论通过 JavaScript 判断是否在微信浏 ...

  7. 利用Javascript判断操作系统的类型

    在通过Javascript实现客户端和服务端的交互时,有时候需要对操作系统进行判断,以便实现不同操作系统下的兼容性,比如:我们有一个网站, 在Windows XP下浏览效果良好,但是到了Ubuntu下 ...

  8. JavaScript判断浏览器 Browser detect

    The script Copy this script into your JavaScript files. It works immediately, and you can query thre ...

  9. javascript 判断 flash 插件是否安装

    [转载自网络] <!-- 以下为判断是否安装flash的js --> <script> //Powered By smvv @hi.baidu.com/smvv21 funct ...

最新文章

  1. HTTP协议03-http特点及请求方式
  2. WCF Membership Provider
  3. 004 IOC---IOC容器
  4. 操作系统:第一章 计算机系统概述
  5. 手写call,apply和bind(分析三者的用法与区别)
  6. U94222-循环往复【tarjan,DAGdp】
  7. [html] 如何禁止input输入的历史记录?
  8. Python Pytest装饰器@pytest.mark.parametrize用例数据驱动(三)
  9. Error: .eslintrc.js » eslint-config-standard: Environment key “es2021“ is unknown 版本兼容问题
  10. c语言中如何确保一个程序是单例的_c++单例模式
  11. [设计模式]单例模式
  12. 一网打尽!每个程序猿都该了解的黑客技术大汇总
  13. Ubuntu Quickbuild 安装配置
  14. Android Baseline小tip
  15. BIO,NIO,AIO总结
  16. 如何将eclipse的英文设置成中文?
  17. stemming与lemmatization
  18. PHP实现密钥分发中心,密钥分发中心(KDC)
  19. LeetCode Task04 数组数组二分查找 0704二分查找 0069Sqrt(x)
  20. 如何批量添加图片到ppt的方法

热门文章

  1. JavaWeb学习案例——学生管理系统
  2. linux安装包软件命令
  3. 单链表结点删除--PTA
  4. 《Head First 设计模式》读书笔记——组合模式
  5. C语言结构体指针的定义和初始化
  6. 基于MATLAB/simulink的水轮发电机调速系统仿真
  7. CSAPP 第三版6.11练习题
  8. 电脑爱好者2012年全彩高清PDF
  9. C51精简版教程(AT89C51/STC89C52)
  10. 设备维修管理系统java源码_Jsp设备维修管理系统javaweb设备维修管理系统mysql数据源...