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

利用javascript判断浏览器是否已经安装ActiveX控件和是否禁止运行ActiveX控件利用javascript判断浏览器是否已经安装ActiveX控件和是否禁止运行ActiveX控件(转)从微软给IE打上SP2以后,当IE在打开一些含有ActiveX控件的网页是,不再像以前那样,弹出提示框,让用户选择是否安装控件;现在默认情况下给隐藏起来,普通用户根本不知道是怎么回事。公司产品同样也遇到这样的问题,唯一的办法就是将控件做成一个exe文件,供用户下载手动安装注册;这样就需要

大家好,又见面了,我是你们的朋友全栈君。

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/146376.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • PreparedStatement 不定参数处理「建议收藏」

    PreparedStatement 不定参数处理「建议收藏」最近项目用到PreparedStatement,根据输入条件查询数据,输入条件不为空,则参与查询,为空,则不参与查询。网上搜了,也是按照网上的方法,也不算原创,记录一下。参考文章:https://blog.csdn.net/dream_broken/article/details/44681597/代码如下:Connectionconn=null;PreparedStatem…

    2022年6月1日
    35
  • MySQL中的数据类型_js中的数据类型

    MySQL中的数据类型_js中的数据类型主要介绍了mysql中的数据类型,主要介绍整数类型,浮点类型,日期类型。开发中每个表都会存在主键和更新时间,这时候选择那个数据类型作为主键也是很重要的,如果选择的数据类型太大会浪费空间,如果选择小了会影响后期开发。平时面试官也会问你那个数据类型作为主键最好。

    2022年9月19日
    3
  • 好友朋友圈动态仅三天可见?点击这个按钮,不管多久都能看

    好友朋友圈动态仅三天可见?点击这个按钮,不管多久都能看微信朋友圈可以说是了解好友的最好地方,但是现在大部分人都会设置朋友圈动态仅三天可见的权限。这样就只能看到好友三天内的朋友圈内容,其实只要点击这个按钮,多久都能看!先给大家介绍一点朋友圈小技巧吧!快速设置朋友圈权限朋友圈最烦人的就是广告了,本来想看看好友们有趣的动态,但翻了好几页都是广告。其实只需长按对方头像,就能设置不看对方的权限啦!发表纯文字朋友圈家里…

    2022年6月11日
    99
  • 聊聊LuaJIT「建议收藏」

    聊聊LuaJIT「建议收藏」JIT什么是JITJIT=JustInTime即时编译,是动态编译的一种形式,是一种优化虚拟机运行的技术。程序运行通常有两种方式,一种是静态编译,一种是动态解释,即时编译混合了这二者。Ja

    2022年8月6日
    5
  • freemarker map 判断是否为空「建议收藏」

    freemarker map 判断是否为空「建议收藏」记录一下freemarker学习中的一些重要知识点。

    2022年6月16日
    80
  • 什么叫单页面开发_获取当前页面url

    什么叫单页面开发_获取当前页面url参考网址https://www.cnblogs.com/belongs-to-qinghua/p/11151054.htmlhttp://www.zhiliaotang.net/jishujiaoliu/web/965.html单页面开发:单页面开发常用于webapp开发和后台管理系统等单页面应用原理:我们通常所说的单页面应用程序通常是通过前端框架vue,react,angular…

    2022年10月13日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号