Cefsharp:从文档中获取超链接

时间:2015-12-29 19:50:27

标签: vb.net hyperlink cefsharp

我习惯在这样的文档中获取超链接:

    Dim html As String =
                                    "var linksArray = new Array(); " &
                                    "for (var i = 0; i < document.links.length; i++) {" &
                                    "linksArray[i] = [String(document.links[i].innerHTML), String(document.links[i].innerText), String(document.links[i].href)];" &
                                    "} " &
                                    "return linksArray;"

    Try
        Dim linksArray As JSArray = _Browser.WebView.EvalScript(String.Format("(function(){{ {0} }})()", html))

        For Each obj As Object In linksArray

            Dim sInnerHTML As String = obj(0).ToString().Trim()
            Dim sInnerText As String = obj(1).ToString().Trim()
            Dim sHRef As String = obj(2).ToString().Trim()

            Dim nItem As New clsURL
            nItem.HRef = sHRef
            nItem.InnerHTML = sInnerHTML
            nItem.InnerText = sInnerText

            nList.Add(nItem)

        Next

但是,CefSharp没有JSArray。

有谁可以告诉我用CefSharp做到这一点的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

阅读FAQ,特别是https://github.com/cefsharp/CefSharp/wiki/Frequently-asked-questions#2-how-do-you-call-a-javascript-method-that-return-a-result

EvaluateScriptAsync将返回List<object>(在您的情况下,每个条目可能是另一个List<object,因为您已经嵌套了数组)

我创建了Gist作为示例,它位于C#,您应该可以将其移植到VB.Net(我无法帮助您)

https://gist.github.com/amaitland/9d354376960b0cd9305a (我打算在FAQ添加一个稍微更详细的例子,所以你的案例似乎是一个合理的候选人。)

作为旁注,当使用EvaluateScriptAsync执行代码块时,我建议使用匿名闭包。