通过COM Interop使用VB.net调用javascript函数

时间:2009-08-11 13:30:45

标签: javascript vb.net com-interop

我有一个为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 () {}

我正在班上寻找类似的实现。

2 个答案:

答案 0 :(得分:0)

您必须公开COM事件,并将JavaScript方法分配给该事件。这样,当您在代码中调用事件时,将调用JavaScript方法。

示例 -

C#代码

[ComVisible(false)]
public delegate void OperationCompleted(string message); //No need to expose this delegate

public event OperationCompleted OnOperationCompleted;

if(OnOperationCompleted != null)
    OnOperationCompleted("Hello World!");

的JavaScript

comObject.OnOperationCompleted = function(message) { alert(message); }

注意:我以前做过这个。我猜有一些COM相关的错误。要解决它,我必须在代码中的某处附加一些属性(我现在不记得它)。但你可以弄明白或谷歌。

答案 1 :(得分:0)

经过一段时间的努力,我们设法找到了一个效果很好的解决方案。由于我们正在为属性设置javascript函数,因此该函数的所有属性和方法都可供VB.net使用,包括javascript标准方法,调用 apply

(function () { alert("Hello"); }).call();

解决方案是在VB.net代码中调用call方法,它看起来效果很好。