Вызов функции JavaScript с помощью VB.net через COM Interop
-
12-09-2019 - |
Вопрос
У меня есть класс VB.net, зарегистрированный для COM-взаимодействия, экземпляр которого я создаю на 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
После некоторых попыток нам удалось найти решение, которое работало довольно хорошо.Поскольку мы устанавливаем для свойства функцию javascript, все свойства и методы этой функции становятся доступными для VB.net, включая стандартные методы javascript. вызов и применять:
(function () { alert("Hello"); }).call();
Решением было просто вызвать метод вызова в коде VB.net, и, похоже, он работает очень хорошо.
Другие советы
Вам необходимо предоставить событие COM и назначить этому событию метод JavaScript.Таким образом, когда вы вызываете событие в своем коде, будет вызываться метод JavaScript.
Пример -
Код С#
[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.Чтобы решить эту проблему, мне пришлось прикрепить какой-то атрибут где-то в коде (сейчас я его точно не помню).Но вы сможете это выяснить или погуглить.