【发布时间】:2015-05-20 05:44:48
【问题描述】:
我需要在所有 javascript 运行后获取 html。我使用 WebKit.NET,问题是 WebKitBrowser.StringByEvaluatingJavaScriptFromString 即使使用简单的 alert() 也不会返回任何内容。当我通过“document.getElementsByTagName(' html')[0].outerHTML"(它实际上是我需要得到的)作为它抛出 System.AccessViolationException(试图读取或写入受保护的内存)的参数。当然,我确实在坚持 DocumentCompleted 委托的函数中调用 StringByEvaluatingJavaScriptFromString。我尝试使用相同的函数 StringByEvaluatingJavaScriptFromString 和相同的参数“document.getElementsByTagName('html' )[0].outerHTML" 并且它与浏览器控制台中的 "document.getElementsByTagName('html')[0].outerHTML" 一起工作得很好。请帮助或提供替代方案,在运行所有 javascript 之后如何获得整个 html。
public Form1()
{
InitializeComponent();
webKitBrowser1.Navigate("http://famous-design.ru/stoly/");
webKitBrowser1.DocumentCompleted += webKitBrowser1_DocumentCompleted;
}
void webKitBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
string str = webKitBrowser1.StringByEvaluatingJavaScriptFromString("document.getElementsByTagName('html')[0].outerHTML");
}
【问题讨论】:
-
为什么使用:document.getElementsByTagName("html")[0] 当你可以使用:document.documentElement
标签: javascript c# html