0

我正在尝试解决一个让我感到不安的问题。这可能很明显,但我真的无法弄清楚出了什么问题。

我有一个带有 WebBrowser 的 winform,我以这种方式加载它,它工作正常:

    WebBrowser.DocumentText = someHtmlCode;

在我的 winform 的网络浏览器中,我可以右键单击以获取 HTML 源代码并检查代码是否与我在 DocumentText 属性中设置的相同......此时一切正常。

因此,一旦我加载并运行它,我就会向其中注入一些 JavaScript 代码,如下所示:

    HtmlElement head = WebBrowser.Document.GetElementsByTagName("head")[0];
    HtmlElement scriptEl = WebBrowser.Document.CreateElement("script");
    IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement;
    element.text = "function sayHello() { alert('hello') }";
    head.AppendChild(scriptEl);

所以我添加了一个名为“sayHello”的新 JavaScript 函数,我可以这样调用它,它仍然可以正常工作:

    WebBrowser.Document.InvokeScript("sayHello");

所以此时一切正常,我可以运行 JavaScript 函数并在 WebBrowser 中获取警报,但让我感到不安的是,当我右键单击 WebBrowser 以获取源代码时,我得到的代码与我在开始。没有任何关于后来添加的 JavaScript 代码的踪迹,尽管它在那里是因为当我调用它时它正在工作。

当然,如果我查看 WebBrowser.HtmlDocument,我也看不到 JavaScript,这与查看源代码相同。

所以我的问题是:新的 JavaScript 代码去哪儿了,我怎样才能把它找回来?我需要获取更新的 HTML 代码。

谢谢!

4

1 回答 1

0

源代码不会为您提供更新的文档。要获取更新的文档,您必须使用以下

HtmlElement head = WebBrowser.Document.GetElementsByTagName("head")[0];
string h = head.innerHtml;

唯一的选择是导航顶部节点并获取当前 Html 状态的 innerHtml。

于 2013-04-24T08:36:15.763 回答