【问题标题】:How to update DOM content inside WebBrowser Control in C#?如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?
【发布时间】:2012-04-10 01:08:35
【问题描述】:
我有一个 Windows .Net Form,其中包含一个 WebBrowser 控件。
此WebBrowser 显示基于其Url 属性的网页。
我可以修改WebBrowser控件内显示页面的DOM吗?
如果是,怎么做?
【问题讨论】:
标签:
c#
winforms
dom
webbrowser-control
【解决方案1】:
对于那些感兴趣的人,这里是解决方案:
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】:
来自http://msdn.microsoft.com/pt-br/library/system.windows.forms.webbrowser.aspx:
您还可以通过 Document 属性操作网页的内容,该属性包含一个 HtmlDocument 对象,该对象提供对当前页面的 HTML 文档对象模型 (DOM) 的托管访问。当与 ObjectForScripting 属性结合使用时,此属性非常有用,可在 Web 页面中实现应用程序代码和动态 HTML (DHTML) 代码之间的双向通信,让您将基于 Web 的控件和 Windows 窗体控件组合在一个单一的用户界面。您可以使用 Document 属性从应用程序中调用脚本代码方法。您的脚本代码可以通过 window.external 对象访问您的应用程序,该对象是为主机访问提供的内置 DOM 对象,它映射到您为 ObjectForScripting 属性指定的对象。