Как обновить содержимое DOM внутри элемента управления WebBrowser в C #? - PullRequest
5 голосов
/ 26 марта 2012

У меня есть Windows .Net Form, которая содержит элемент управления WebBrowser.
Этот WebBrowser отображает веб-страницу на основе ее свойства Url.
Можно ли изменить DOM отображаемой страницы внутри элемента управления WebBrowser?
Если да, то как?

Ответы [ 2 ]

8 голосов
/ 27 марта 2012

Для тех, кто заинтересован, вот решение:

HtmlElement headElement = webBrowser1.Document.GetElementsByTagName("head")[0];
HtmlElement scriptElement = webBrowser1.Document.CreateElement("script");
IHTMLScriptElement domScriptElement = (IHTMLScriptElement)scriptElement.DomElement;
domScriptElement.text = "function applyChanges(){/*DO WHATEVER YOU WANT HERE*/}";
headElement.AppendChild(scriptElement);

// Call the nextline whenever you want to execute your code
webBrowser1.Document.InvokeScript("applyChanges");
2 голосов
/ 26 марта 2012

С http://msdn.microsoft.com/pt-br/library/system.windows.forms.webbrowser.aspx:

Вы также можете манипулировать содержимым веб-страницы через свойство Document, которое содержит объект HtmlDocument, который обеспечивает управляемый доступ к объектной модели документа HTML (DOM) для текущей страницы. Это свойство полезно, когда используется в сочетании со свойством ObjectForScripting, для реализации двусторонней связи между кодом приложения и динамическим кодом HTML (DHTML) на веб-странице, позволяя объединять веб-элементы управления и элементы управления Windows Forms в одном пользовательский интерфейс. Вы можете использовать свойство Document для вызова методов кода сценариев из вашего приложения. Ваш скрипт-код может обращаться к вашему приложению через объект window.external, который является встроенным объектом DOM, предоставленным для доступа к хосту, и который сопоставляется с объектом, который вы указываете для свойства ObjectForScripting.

...