asp.net中js调用activex的方法提示“该对象不支持此属性或方法”
我在ActiveX中定义了一个方法:关闭串口
public void closeser()
{
comm.close();
}
在加入该ActiveX控件的页面上编写js调用该方法
<object id="ActiveX" classid="clsid:0A080A10-5F36-4781-A592-74FDCCB1F30B" codebase="ActiveX.cab"> </object>
<script language="javascript" type="text/javascript">
function CallActiveXFunction(){
var activeObj=document.getElementById("ActiveX");
if(activeObj){
document.getElementById("ActiveX").closeser();
}
}
</script>
<input type="button" onClick="javascript:CallActiveXFunction();" value="关闭串口" id="Button1" runat="server"></input>
但我点击“关闭串口”按钮后,提示网页有错误,查看后是这条语句document.getElementById("ActiveX").closeser();有问题。
问题是“该对象不支持此属性或方法”。
请路过的高手指点一下该如何解决。
------解决方案--------------------检查下,你嵌入的是不是包含 closeser 的那个对象
------解决方案--------------------1.检查你的ActiveX是不是为COM互操作注册
2.你的ActiveX是不是受信任的,可以在程序集中加入
using System.Security;
[assembly: AllowPartiallyTrustedCallers()]
------解决方案--------------------你可以先在早期的开发平台上验证你的这个COM组件,例如在excel的vba编程平台里,从菜单上选择“引用”,然后引用你的COM组件,然后在一个代码模块中写
sub asdfaf
dim x as new 你的控件的命名空间.你的控件的类名
x.closeser()
end sub
通常,在你写 x. 这个句点的时候,你就可以看到你的控件有没有暴露相应的方法给 COM 了。
如果没有暴露,那么你开发COM的声明方法有错误。例如 ClassInterfaceAttribute 标签声明不对,或者缺少一个必要的 interface 定义COM组件的接口,或者接口方法上缺少 DispIdAttribute 标签定义,等等。