Как повысить события из VB.Net ClassLibrary / UserControl (ActiveX) для JavaScript? - PullRequest
3 голосов
/ 27 мая 2009

Я создал VB.Net ClassLibrary с UserControl в нем. Я могу загрузить его со страницы 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 Ответ

1 голос
/ 23 ноября 2009

Я не использовал , поэтому я не уверен, но я ожидаю, что вы объявите обработчик событий как обычные события в Javascript.

В элементах атрибутов:

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

или как функция в объекте: (может быть неправильный термин)

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

или используя функцию (и) регистрации события: document.getElementById("myControl1").addEventListener("TestEvent", functionName, false);

(это зависит от браузера, это для Firefox, не уверен насчет других)

с каждым из этих «functionName» является функцией, которую вы объявляете в .

Возможно, стоит взглянуть на Quirksmode - расширенная регистрация событий

...