如何将事件从VB.Net ClassLibrary / UserControl(ActiveX)提升为JavaScript?

时间:2009-05-26 20:48:35

标签: 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>

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

但似乎都没有得到这个事件。有没有人有任何想法?

谢谢!

1 个答案:

答案 0 :(得分:1)

我没有使用&lt; object&gt;之类的,所以我无法确定,但我希望您在Javascript中将事件处理程序声明为常规事件。

在元素属性中:

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

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

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

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

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

每个“functionName”都是你在&lt; head&gt;中声明的函数。

可能想看看Quirksmode - Advanced event registration