如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?

Posted

技术标签:

【中文标题】如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?【英文标题】:How to update DOM content inside WebBrowser Control in C#? 【发布时间】:2012-04-10 01:08:35 【问题描述】:

我有一个 Windows .Net Form,其中包含一个 WebBrowser 控件。 此WebBrowser 显示基于其Url 属性的网页。 我可以修改WebBrowser控件内显示页面的DOM吗? 如果是,怎么做?

【问题讨论】:

有可能。 WebBrowser 应该有一个名为 Document 的属性,您可以通过托管代码上的 htmldocument 访问 html (msdn.microsoft.com/en-us/library/…) 这是我提到的那个特定属性的链接msdn.microsoft.com/en-us/library/… 它是只读的吗(我看到它只包含一个吸气剂)? 【参考方案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 属性指定的对象。

【讨论】:

在链接末尾,您会找到一些示例。

以上是关于如何在 C# 中更新 WebBrowser 控件中的 DOM 内容?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# WebBrowser 控件中获取重定向的 url

求助!!!我在vs2010 c#中添加一个webbrowser控件,在控件中初始化一页面,然后输入

C#在控件webBrowser中操作页面,如何取到网页登录时的用户名密码

c# WebBrowser 控件滚动条

c#添加webBrowser控件,如何实现自动填写打开的网页中的登录帐号,密码,并且自动登陆?

如何在 C# 中由 .NET WebBrowser 控件托管的页面中调用 JavaScript 方法并将参数传递给 JavaScript 方法? [复制]