我需要在所有 javascript 运行后获取 html。我为此使用 WebKit.NET,问题是 WebKitBrowser.StringByEvaluatingJavaScriptFromString 即使使用简单的 alert() 也不会返回任何内容。当我传递“document.getElementsByTagName(' html')[0].outerHTML"(这实际上是我需要得到的)作为它抛出 System.AccessViolationException(尝试读取或写入 protected 内存)的参数。当然,我确实在坚持 DocumentCompleted 委托(delegate)的函数中调用了 StringByEvaluatingJavaScriptFromString。我尝试在 objective-c 中使用相同的函数 StringByEvaluatingJavaScriptFromString 和相同的参数“document.getElementsByTagName('html') 对 WebView 做同样的事情)[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");
}
最佳答案
我所做的是将 webKitBrowser1.StringByEvaluatingJavaScriptFromString
与 webKitBrowser1.Document.InvokeScriptMethod
集成:
所以你有这个:
webKitBrowser1.StringByEvaluatingJavaScriptFromString("function GetElement() {document.getElementsByTagName('html')[0].outerHTML};")
var returnvalue = (string) webKitBrowser1.Document.InvokeScriptMethod("GetElement");
其中返回值为对象字符串代码中的returnvalue
(当然你可以改)
关于javascript - WebKitBrowser.StringByEvaluatingJavaScriptFromString 不返回任何值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29105153/