从微软给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控件的添加方法。
要实现Firefox对ActiveX控件的支持,必须解决四个问题,包括如何创建和初始 化控件对象,如何在Firefox浏览器中显示和现场激活控件,如何使JavaScript能访问控 件的属性和方法以及如何捕获控件事件并将其转发给...
新颖网络截屏插件是一款能够非常方便的将屏幕截屏图片发送到WEB服务器中的轻量级ActiveX控件,它可以非常方便的集成到您的博客,BBS,论坛,OA,或电子商务网站中,带给用户前所未有的用户体验。 同时新颖网络提供了...
ActiveX组件与JavaScript交互ActiveX组件与JavaScript交互ActiveX组件与JavaScript交互
vs2010开发activex(MFC)控件/ie插件(一),测试ocx控件加载 vs2010开发activex(MFC)控件/ie插件(二),js传参数 vs2010开发activex(MFC)控件/ie插件(三),js调用ocx控件的接口函数
制作一个ActiveX控件,在网页中安装加载,然后可以通过javascript访问,设置ActiveX控件中的时间显示; 2.介绍C#如何在ActiveX控件中调用javascript的函数; 3.ActiveX版本更新; 4.测试ActiveX控件在新版操作系统上...
这是本人根据FastReport 3.0.3 For VCL 的源代码进行二次封装的ActiveX报表控件。 此控件可用于Javascript、.NET、VB6、VC++等等各种开发语言。 压缩包内有Demo和所有源代码。
软件介绍: 良田高拍仪控件及文档及实例仅用于良田高拍仪的二次开发集成WEB平台;高拍仪身份证读卡和拍照功能集成说明:硬件说明:良田高拍仪S带...包含多浏览器控件接口说明文档,及javascript ServerDemo程序代码。
捷宇 高拍仪系统集成服务,可以为各类办公OA系统、协同办公平台、数据管理平台、数据库系统提供提供ActiveX 版和DLL 版的完整二次 SDK 开发包。可实现高效、高质量存储影像文档,同时支持自动校正、去黑边、获取BMP...
此html调用browserIcons这个activex控件读你的机子下硬盘的内容!!!!!!!而且你可以在网页上进行操作,很好玩
是通用的方法,只需要把唯一的Activex的clsid和任意一个属性或方法名传进来就可以判断了。(找了两个小时才找到 -_-!)
IAXOCX是一个可用于asterisk的支持IAX协议的ActiveX控件,此demo代码为在浏览器中应用IAXOCX控件的源代码。
使用ATL ActiveX控件运行Opengl 供JavaScript调用的接口实现 代码可以运行 有文档说明 适合初学者
主要介绍了ActiveX控件如何与Javascript进行交互,需要的朋友可以参考下
我们都知道通过自定义协议可以从网页启动本地exe程序。但是,当本地没有安装软件时,怎么才能弹出提示,提醒客户安装软件...本实例利用C++编写OCX控件,实现安全接口(没哟证书),网页编写Javascript检测控件是否注册。
但是,随着浏览器的发展,越来越多的浏览器厂商禁止安装ActiveX,以避免因ActiveX组件导致的各种安全问题。 这个打印系统,完美地解决了不用ActiveX但获得与C/S系统一样的打印能力。 本打印系统不需要在浏览器安装...
最近在搞一个客户端调用activex控件的开发。一些实现方法小结,需要的朋友可以参考下。
一、 概述 因项目需要,开始学习并研究VC、DLL及ActiveX控件,网上资料找了很多,但没一个可用的或者说没一个例子可理解并运行的。没办法,自己研究吧。功夫不负有心人,终有小成了,呵呵,现在把自己学习总结了一下...
Activex控件开发工具,编程必备。把ActiveX控件和脚本加入到你的HTML页面中.