【问题标题】:JSObject to JSArrayJSObject 到 JSArray
【发布时间】:2015-12-27 12:10:12
【问题描述】:

我正在尝试从 html 文档中读取所有 URL。

我正在使用以下代码:

    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 JSObject = _Browser.WebView.EvalScript(String.Format("(function(){{ {0} }})()", html))

        If linksArray Is Nothing Then
            Stop 'this line is not reached, so it should be fine so far
        End If

        'the following line throws an error
        Dim urls As JSArray = linksArray.ToArray()

        For Each link As JSObject In urls
            Dim sInnerHTML As String = link(0).ToString().Trim()
            Dim sInnerText As String = link(1).ToString().Trim()
            Dim sHRef As String = link(2).ToString().Trim()

            If sHRef <> "undefined" Then

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

                nList.Add(nItem)
            End If

        Next
    Catch ex As Exception
        Debug.Print(ex.Message.ToString)
        Stop
    End Try

但是,行

 Dim urls As JSArray = linksArray.ToArray()

抛出错误“对象引用未设置为对象实例”。

有人知道如何正确地做吗?

谢谢!

【问题讨论】:

  • 您在监控“linksArray”时看到了什么?
  • @etalon11 我在帖子中添加了屏幕截图。
  • 你能监控一个项目吗? “urls”也没有声明为数组。你不能将普通的Array转换为JSArray,或者?
  • 对不起,你能详细解释一下你需要看什么吗?不,很遗憾,我不能使用普通数组。

标签: vb.net jsobject


【解决方案1】:

知道了:

        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()

        Next

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多