2015-12-29 2 views
0

Я привык получать гиперссылок в документе, как это: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

Есть прочитанный над 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 (I планируйте добавить немного более подробный пример к FAQ, так что ваш случай кажется разумным кандидатом).

В качестве побочного примечания при выполнении блоков кода с использованием EvaluateScriptAsync Я рекомендую использовать анонимное закрытие.

+0

спасибо. Считаете ли вы, что это можно сделать синхронно? – AntonioC

+0

По какой причине? Я бы посоветовал использовать код синхронизации в отношении любой операции UI. – amaitland

+0

EO.Brower может сделать это надежно, поэтому я подумал, что это возможно и с CefSharp. – AntonioC

Смежные вопросы