利用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;
}
利用javascript判断浏览器是否已经安装ActiveX控件和是否禁止运行ActiveX控件相关推荐
- javascript判断浏览器和终端类型,js如何区分手机、电脑终端和浏览器
判断浏览器类型 复制代码代码如下: if ( window.sidebar && "object" == typeof( window.sidebar ) & ...
- JavaScript判断浏览器类型及版本
JavaScript判断浏览器类型及版本 你知道世界上有多少种浏览器吗?除了我们熟知的IE, Firefox, Opera, Safari四大浏览器之外,世界上还有近百种浏览器. 几天前,浏览器家族有 ...
- JavaScript判断浏览器类型及版本(新增谷歌的Chrome)
来源:http://blog.tripdev.com/?tid=164 JavaScript是前端开发的主要语言,我们可以通过编写JavaScript程序来判断浏览器的类型及版本.JavaScript ...
- JavaScript判断浏览器Flash Player信息
今天研究了点Flex技术,做了一个小的Demo,在测试时发现经常报错,网上一查发现是浏览器Flash Player版本较低造成(需要10及其以上的版本)的,对此总结了一下借助JavaScript脚本判 ...
- html判断是否在微信里打开,JavaScript判断浏览器内核,微信打开自动提示在浏览器打开...
微信会屏蔽 URL 自定义的 scheme ,导致无法跳转手机中的浏览器.网上有一些工具类网站可以实现直接跳转浏览器,之后有机会我会整理一下.我们今天只讨论通过 JavaScript 判断是否在微信浏 ...
- JavaScript判断浏览器内核,微信打开自动提示在浏览器打开
微信会屏蔽 URL 自定义的 scheme ,导致无法跳转手机中的浏览器.网上有一些工具类网站可以实现直接跳转浏览器,之后有机会我会整理一下.我们今天只讨论通过 JavaScript 判断是否在微信浏 ...
- 利用Javascript判断操作系统的类型
在通过Javascript实现客户端和服务端的交互时,有时候需要对操作系统进行判断,以便实现不同操作系统下的兼容性,比如:我们有一个网站, 在Windows XP下浏览效果良好,但是到了Ubuntu下 ...
- JavaScript判断浏览器 Browser detect
The script Copy this script into your JavaScript files. It works immediately, and you can query thre ...
- javascript 判断 flash 插件是否安装
[转载自网络] <!-- 以下为判断是否安装flash的js --> <script> //Powered By smvv @hi.baidu.com/smvv21 funct ...
最新文章
- HTTP协议03-http特点及请求方式
- WCF Membership Provider
- 004 IOC---IOC容器
- 操作系统:第一章 计算机系统概述
- 手写call,apply和bind(分析三者的用法与区别)
- U94222-循环往复【tarjan,DAGdp】
- [html] 如何禁止input输入的历史记录?
- Python Pytest装饰器@pytest.mark.parametrize用例数据驱动(三)
- Error: .eslintrc.js » eslint-config-standard: Environment key “es2021“ is unknown 版本兼容问题
- c语言中如何确保一个程序是单例的_c++单例模式
- [设计模式]单例模式
- 一网打尽!每个程序猿都该了解的黑客技术大汇总
- Ubuntu Quickbuild 安装配置
- Android Baseline小tip
- BIO,NIO,AIO总结
- 如何将eclipse的英文设置成中文?
- stemming与lemmatization
- PHP实现密钥分发中心,密钥分发中心(KDC)
- LeetCode Task04 数组数组二分查找 0704二分查找 0069Sqrt(x)
- 如何批量添加图片到ppt的方法