网页中调用 C# 编写的OCX 控件的方法:
一、 通过 <object></object> 标签 进行控件的引入。 注意:原生js 就可以调用不需要其他支持。
<object id="ocx" width="1000" height="1000" classid="clsid:7D827EC4-1ACA-4241-953A-BC57ABC451CE" ></object>
js 中调用方法:
let temp = ocx.GetCheckResult(); // 可以直接通过ID 调用
也可以 通过id 获取对象之后进行操作:
let reader = document.getElementById("ocx");
let temp = reader.GetCheckResult(); //控件中的方法
这种方式,是通过将控件植入到网页中显示,并通过操作 object 所对应的对象的方法。
1、object 是一个标签,它符合所有的标签属性操作;
2、id 属性是object 对象的唯一入口,必须存在; classid 对应注册表上的注册信息,必须一致(去除大括号) ;codeBase 对应版本信息 包括对应的位置和版本批次(可以不写,如果是本地自主安装,不影响操作);
3、使用控件的时候,需注意控件的初始化是否需要属性设置,属性的设置通过 param 标签,name:属性名 value:属性值
<object classid="clsid:06CA9432-D9BD-4867-8475-770B131E1759" codeBase="JITDSign.ocx#version=2,0,20,5" id="JITDSignOcx" size="0" style="display:none" width="0">
<param name="_Version" value="65536" valuetype="data"/>
<param name="_ExtentX" value="2646" valuetype="data"/>
<param name="_ExtentY" value="1323" valuetype="data"/>
<param name="_StockProps" value="0" valuetype="data"/>
</object>
二、 通过调用 ActiveX 进行控件的调用,直接通过注册表名称进行调用
用名称调用,var ocx=new ActiveXObject("JITDSIGN.JITDSignCtrl.1");
三、 我的最终解决方案是通过 C# 调用该控件,外放它的方法,进行调用的。
错误信息: 提示 this is not a function.
解决: 大概率是浏览器支持的问题,换用IE 浏览器解决问题,兼容的问题没有进行探究。不过引用网友的回复:
ocx只能在IE浏览器中运行,可以用下面的方法判断是否支持ocx:
//判断登陆类型
if(!window.ActiveXObject){
alert("对不起,证书登陆请使用IE浏览器!");
return;
}
启用 OCX 控件的时候,注意浏览器的设置:启用 ActiveX ;关闭 证书检查项(选项 -> 高级 -> 安全)
错误信息:提示对象查找不到巴拉巴拉的。。。。 查看 Codebase 属性对应的路径是否有效。有可能是这个问题。