Управление веб-браузером Winforms не запускает документ с веб-сайтом AJAX - PullRequest
0 голосов
/ 18 марта 2010

Настольное приложение VB.Net использует браузер IE для навигации в Интернете. Когда загружается обычная страница, происходит событие document_complete, и я могу прочитать получившуюся страницу и перейти оттуда. У меня проблема в том, что страница, которую я веду, написана с использованием AJAX, поэтому событие завершения документа никогда не запускается. Кроме того, когда вы просматриваете исходный код страницы после загрузки новой части через AJAX, она не меняется. Как люди справляются с этим? Какие у меня варианты?

Ответы [ 7 ]

1 голос
/ 06 апреля 2010

Это решение может решить вашу проблему. prerequists: Управление AxwebBrowser, ссылка на mshtml.dll

Dim axmshtml As mshtml.HTMLDocument = YourAxWebBrowserControl.Document

Dim HTMLSource As String = axmshtml.body.innerHTML 'html source, включая изменения DOM

Если вы знаете, что ищете, вы можете поместить вышеуказанный код в таймер / цикл
и просто отслеживать источник страницы на наличие изменений.

1 голос
/ 17 января 2012

Если wb - это ваш веб-браузер, вместо получения HTML используйте:

wb.DocumentText

использование:

wb.Document.Body.InnerHtml

Это даст вам обновленный HTML, отражающий обновление AJAX.

Что касается определения, когда завершается AJAX, для меня это, кажется, вызывает событие DocumentCompleted. Не уверен, почему у тебя все по-другому.

0 голосов
/ 05 мая 2010

Вы можете использовать событие ProgressChanged, похоже, оно срабатывает во время вызовов ajax

0 голосов
/ 28 марта 2010

Я предполагаю, что страница, загружаемая в ваше приложение Windows, выполняет AJAX-вызов, который появляется, чтобы обновить страницу. В этом случае событие document_complete не запускается, поскольку сама веб-страница не обновляется, а составляет часть страницы.

Я нашел аналогичный вопрос об этой проблеме, с принятым ответом в VB.Net.

0 голосов
/ 26 марта 2010

Не уверен, что это сработает.

Когда вызов Ajax завершится, добавьте случайный хэш привязки к URL-адресу, например, так: затем добавьте свой код в событие NavigateComplete2.

http://msdn.microsoft.com/en-us/library/aa768334%28VS.85%29.aspx

0 голосов
/ 18 марта 2010

Я видел такое поведение с C #, когда некоторые сценарии AJAX создавали условия гонки. В этом случае помогло добавление атрибута отсрочки к тегу скрипта. YMMV.

0 голосов
/ 18 марта 2010

Вам необходимо взаимодействовать с кодом Javascript на веб-сайте, используя методы HtmlDocument.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...