javascript - 如何将事件从 VB.Net 类库/用户控件 (ActiveX) 提升到 JavaScript?

标签 javascript vb.net events activex user-controls

我创建了一个带有 UserControl 的 VB.Net ClassLibrary。我可以从 HTML 页面加载它并调用我创建的方法。这按预期工作。我已经尝试了几个示例来说明如何从 VB 代码向 js 调用者引发事件,但它们似乎都不起作用(我使用的是 IE7)。

我在做什么:

Public Class ctrlABC
   Public Event TestEvent()

然后当我想引发这个事件时,我调用:

RaiseEvent TestEvent()

在我的 JS 文件中,我尝试了以下操作:

<OBJECT id="myControl1" name="myControl1" classid="ABC.dll#ABC.ctrlABC" width=400 height=400></OBJECT>

<SCRIPT LANGUAGE=javascript FOR=myControl1 EVENT=TestEvent> 
    myControl1_TestEvent()  
</SCRIPT>

<script>
function myControl1_TestEvent(){
    alert("raised");
}
</script>

==================然后我试了===================

<OBJECT id="myControl1" name="myControl1" classid="ABC.dll#ABC.ctrlABC" width=400 height=400></OBJECT>

<script>
function myControl1::TestEvent(){
    alert("raised");
}
</script>

===========================

但似乎都没有得到事件。有人有什么想法吗?

谢谢!

最佳答案

我没有像那样使用过 ,所以我不能确定,但​​我希望您像 Javascript 中的常规事件一样声明事件处理程序。

在元素属性中:

<object id="myControl1" .... onTestEvent="functionName"></object>

或作为对象中的函数:(可能不是正确的术语)

document.getElementById("myControl1").onTestEvent = functionName

或者使用事件注册函数: document.getElementById("myControl1").addEventListener("TestEvent", functionName, false);

(这些是特定于浏览器的,这个是针对 firefox 的,其他的不确定)

这些“functionName”中的每一个都是您在 中声明的函数。

可能想看看Quirksmode - Advanced event registration

关于javascript - 如何将事件从 VB.Net 类库/用户控件 (ActiveX) 提升到 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/912683/