0

我有一个为 COM 互操作注册的 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 () {}

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

4

2 回答 2

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 相关的错误。为了解决它,我必须在代码中的某处附加一些属性(我现在不记得了)。但你将能够弄清楚或谷歌它。

于 2009-08-11T13:56:54.220 回答
0

经过一段时间的尝试,我们设法找到了一个效果很好的解决方案。由于我们为该属性设置了一个 javascript 函数,因此该函数上的所有属性和方法都对 VB.net 可用,包括 javascript 标准方法、callapply

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

解决方案是在 VB.net 代码中调用 call 方法,它似乎工作得很好。

于 2009-08-11T14:45:00.450 回答