WebKitBrowser.StringByEvaluatingJavaScriptFromString不返回任何值

时间:2015-03-17 16:56:37

标签: javascript c# html

我需要在所有javascripts运行之后获取html。我使用WebKit.NET,问题是WebKitBrowser.StringByEvaluatingJavaScriptFromString即使使用简单的alert()也不会返回任何内容。当我通过" document.getElementsByTagName(' HTML')[0] .outerHTML" (它实际上是我需要得到的)作为它抛出System.AccessViolationException的参数(试图读取或写入受保护的内存)。当然,我确实在坚持使用DocumentCompleted委托的函数中调用了StringByEvaluatingJavaScriptFromString。我试图在objective-c中使用相同的函数StringByEvaluatingJavaScriptFromString并使用相同的参数" document来对WebView执行相同的操作。的getElementsByTagName(' HTML')[0] .outerHTML"它的效果很好,而且它与#34; document.getElementsByTagName(' html')[0] .outHTML"在浏览器的控制台中。请帮助或者给出替代方案如何在runnig all javascripts之后获得完整的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");

    }    

2 个答案:

答案 0 :(得分:1)

我所做的是将webKitBrowser1.StringByEvaluatingJavaScriptFromStringwebKitBrowser1.Document.InvokeScriptMethod整合:

所以你有这个:

webKitBrowser1.StringByEvaluatingJavaScriptFromString("function GetElement() {document.getElementsByTagName('html')[0].outerHTML};")
var returnvalue = (string) webKitBrowser1.Document.InvokeScriptMethod("GetElement");

其中带有对象字符串的代码中的返回值为returnvalue(当然您可以更改它)

答案 1 :(得分:0)

我也遇到了这个错误,我尝试将html更改为正文:



document.getElementsByTagName('body')[0].outerHTML




然后它奏效了。