谷歌浏览器Chrome调用OCX方法调查

概念解释

  • OLE(Object Linking and Embedding):对象链接和嵌入,为了支持混合文档(包含多种资料类型,比如文本、绘画图像、声音、动画)。Windows桌面就是一个混合文档的范例,微软使用OLE来建立的。最早扩展名为.vbx,后来变为.ocx。
  • OCX(OLE Control Extension):作为OLE的一种补充,文件扩展名为.ocx。OCX可以使用VB、VC、Delphi等工具编写。
  • ActiveX:OLE和OCX后来演化为ActiveX,增加WWW上的功能。主要用在网页上嵌入小程序增加交互功能。

OCX的使用

  • 注册OCX控件,在运行界面执行 regsvr32 D:\DealAPI_ActiveX.ocx
  • 注销OCX控件,在运行界面执行 regsvr32 /u D:\DealAPI_ActiveX.ocx
  • 运行界面执行regedit,搜索DealAPI_ActiveX,可以获取classid

测试页面进行调用

<object id="DealAPI_ActiveXCtl" classid="CLSID:8C44BC14-C04D-4664-B455-7CFA9FCCECB2" width="0" height="0"></object>
<script>
    try {    
        var rcc = document.getElementById("DealAPI_ActiveXCtl");
        rcc.ICConnect(0,0,2,0,"LIKE");
    } catch (e) {
        alert(e);
    }
</script>

这是一个最简单的页面调用刷卡器的功能,可以在IE浏览器上执行,但在Chrome中会报TypeError: rcc.ICConnect is not a function错误。原因是Chrome浏览器不支持微软的ocx组件调用。

常用解决方法

  • 通过NPAPI调用OCX,网上有很多开源的工具如np-activex。但考虑到NPAPI存在安全隐患,Chrome 45版本后就不支持NPAPI了。
  • 加载IE内核来访问页面,常用插件有IE Tab(收费)、Open in IE等。
  • 通过启动本地程序和浏览器插件进行交互,从而让浏览器能调用到OCX,如AppEmit(收费)

第一种方法需要将Chome回退到版本45,第二种方法每次访问前都要先启动插件,第三种方法则需要收费以及二次开发。如果不考虑安全性和方便性,第二种方法实现简单成本较低。

 

 

 

 

 

 


posted @ 2023-10-30 15:52  极光下的鹅  阅读(1030)  评论(0编辑  收藏  举报