Нужен метод для захвата событий JavaScript в веб-браузере WinForm - PullRequest
0 голосов
/ 11 января 2019

У меня есть приложение WinForms, которое использует веб-браузер .NET. Что мне нужно сделать, так это подключить событие на стороне WinForms для запуска, когда значение установлено (через javascript) в загруженной HTML-странице. Мне удалось сделать это с событием onclick кнопки, но я не могу заставить его работать с пользовательским событием. Я не знаю, является ли это ограничением в том, что элемент управления браузера может прикрепить к событию.

По сути, мне нужно, чтобы при вызове JS-функции на странице HTML и установке значения скрытого элемента ввода (или это мог быть обычный ввод, который я стилу для скрытия), мне нужно знать, что в WinForms. Если это помогает, я использую флаги браузера в этом приложении для эмуляции IE11 вместо стандартного механизма IE9. Загруженная HTML-страница также является моей, поэтому я могу изменить ее любым способом, необходимым для правильной работы. Я бы просто использовал события onclick кнопок, но это интеграция gmaps, в которой может быть сгенерировано более 2000 кнопок (по одной на каждый размещенный маркер), так что кажется огромной тратой ресурсов на подключение 2000 событий onclick, когда любой из эти щелчки кнопок изменяют только 4 поля ввода с данными, которые меня интересуют.

Этот проект находится в VB.NET, но решения на C # тоже подойдут. Они могут быть перекодированы или, если решение использует специфические функции C #, мы можем переместить это в отдельную DLL и ссылаться на нее.

1 Ответ

0 голосов
/ 12 января 2019

Потратив много времени на это сегодня, я нашел решение. Это не прямое решение проблемы, которую я написал, но оно привело меня туда, где я должен был быть. Я все еще заинтересован в ответе на исходную проблему, если у кого-то есть такой, но сейчас я обнаружил, что могу создать класс в .NET, который я мог бы назначить объекту ScriptingObject элемента управления браузера, а затем вызвать окно. external.myFunctionName, где myFunctionName - это функция в классе .NET. Это прекрасно работает для моей конкретной проблемы, но не сработало бы, если бы я не управлял HTML-страницей, которую я использовал в браузере. Вот почему я все еще заинтересован в альтернативных решениях, если у кого-то есть. Спасибо.

...