javascript - WebKitBrowser.StringByEvaluatingJavaScriptFromString 不返回任何值

标签 javascript c# html

我需要在所有 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.StringByEvaluatingJavaScriptFromStringwebKitBrowser1.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/

相关文章:

javascript - 将数组与 jQuery 进行比较

javascript - 如何将 promise 链接在一起

c# - NHibernate 不同 session 间数据不一致

javascript参数对象引用未知

html - 更改单击的纸按钮的颜色

javascript - WinJS自定义控件: winControl undefined

javascript - meteor 的奇怪行为

c# - EWS 托管 API 1.1 - 拉取订阅内存泄漏

c# - 选择 View 模型时如何在 IQueryable 中添加新的 where 条件?

html - 生成多个 HTML 框的有效方法