我正试图解决令我不安的问题。这可能是显而易见的,但我无法弄清楚出了什么问题。
我有一个带有WebBrowser的winform,我以这种方式加载它并且工作正常:
WebBrowser.DocumentText = someHtmlCode;
在我的winform的webbrowser中,我可以右键单击以获取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代码。
谢谢!
答案 0 :(得分:0)
源代码不会为您提供更新的文档。要获得更新的文档,您必须使用以下
HtmlElement head = WebBrowser.Document.GetElementsByTagName("head")[0];
string h = head.innerHtml;
唯一的选择是导航顶级节点并获取内部HTML以获取当前的Html状态。