我有一个为COM interop注册的VB.net类,我使用以下代码在HTML页面中实例化:
<script type="text/javascript">
var MyClass = new ActiveXObject("Namespace.TestClass");
</script>
我可以很好地调用方法,但是假设我想将javascript函数设置为属性,如下所示:
MyClass.TestFunction = function () { alert("It worked!"); }
如何设置我的vb.net代码才能启动该功能?这就是MSXML在javascript中为XMLHttpRequest对象工作的方式,你可以设置
XHR.onreadystatechange = function () {}
我正在班上寻找类似的实现。
答案 0 :(得分:0)
您必须公开COM事件,并将JavaScript方法分配给该事件。这样,当您在代码中调用事件时,将调用JavaScript方法。
示例 -
[ComVisible(false)]
public delegate void OperationCompleted(string message); //No need to expose this delegate
public event OperationCompleted OnOperationCompleted;
if(OnOperationCompleted != null)
OnOperationCompleted("Hello World!");
comObject.OnOperationCompleted = function(message) { alert(message); }
注意:我以前做过这个。我猜有一些COM相关的错误。要解决它,我必须在代码中的某处附加一些属性(我现在不记得它)。但你可以弄明白或谷歌。
答案 1 :(得分:0)
经过一段时间的努力,我们设法找到了一个效果很好的解决方案。由于我们正在为属性设置javascript函数,因此该函数的所有属性和方法都可供VB.net使用,包括javascript标准方法,调用和 apply :
(function () { alert("Hello"); }).call();
解决方案是在VB.net代码中调用call方法,它看起来效果很好。