Вызов функции JavaScript с помощью VB.net через COM Interop

StackOverflow https://stackoverflow.com/questions/1260385

  •  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.Чтобы решить эту проблему, мне пришлось прикрепить какой-то атрибут где-то в коде (сейчас я его точно не помню).Но вы сможете это выяснить или погуглить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top