#.net #winforms #web-controls #awesomium
#.net #winforms #веб-элементы управления #awesomium
Вопрос:
Я делаю все это в .Приложение Net winforms.
Я привык использовать IE WebControl, который просто имеет свойство document . Довольно просто.
Теперь я использую Awesomium.WebControl и я пытаюсь добраться до базового документа, чтобы я мог выполнить некоторую работу с DOM.
Но я не вижу, как к этому добраться. Я также не могу найти никаких статей о том, как это сделать в Google.
Может кто-нибудь опубликовать какой-нибудь рабочий код, который начинается с WebControl и заканчивается объектом, имеющим все методы DOM, пожалуйста? Мне все равно, какой это класс, если он позволяет мне просматривать коллекции dom и прочее.
Я предпочитаю выполнять свою работу в.Чистый, а не в javascript. но в качестве последнего средства я возьму то, что работает.
Спасибо!
Ответ №1:
Чтобы получить доступ к HTML-документу в вашем Awesomium WebControl, вы можете выполнить JavaScript getElementsByTagName
. Вот как мы это делаем:
Dim html As String = WebControl1.ExecuteJavascriptWithResult("document.getElementsByTagName('html')[0].innerHTML")
Например, вы можете поместить этот код в обработчик WebControl.DocumentReady
события. В противном случае вам необходимо выполнить проверку WebControl1.IsDocumentReady = True
перед выполнением JavaScript.
Затем мы используем HtmlAgilityPack для разбора этой HTML-строки в HTMLDocument:
Dim doc As New HtmlDocument
doc.LoadHtml(html)
что, надеюсь, позволит вам выполнить всю необходимую работу!
Комментарии:
1. Спасибо. Вы случайно не знаете, является ли html, возвращаемый ExecuteJavascriptWithResult, обработкой dom после javascript или исходным неизмененным кодом веб-страницы?
2. Он вернет текущее состояние страницы. Итак, если вы сделаете это после запуска
DocumentReady
события, это будет манипуляция с dom после JavaScript.3. Такого рода работы, за исключением того, что DocumentReady вызывается до завершения всех асинхронных обратных вызовов. Есть ли способ узнать, когда они будут завершены?