簡體   English   中英

從[object HTMLCollection]中檢索[String]

[英]Retrieve [String] from [object HTMLCollection]

我一直在努力解決這個問題。 我有一個有效的javascript命令,我從我的wkwebview發送:

document.getElementById('qlist-wrapper').getElementsByClassName('question-summary narrow').toString();

當我從Safari控制台輸入時,我會回來

"[object HTMLCollection]"

但是當我嘗試使用返回的對象時,我感到很茫然。 我得到“EXC_BAD_ACCESS”(代碼= 1,加上一個地址)。 有4個有效負載對象與“html:Any”對象關聯; 他們都是0。 這是上下文中的代碼:

webView.evaluateJavaScript("document.getElementById('qlist-

wrapper').getElementsByClassName('question-summary narrow').toString();", completionHandler: { (html: Any, error: Error?) in
        print("\(html)")
        if let error = error {
            print("\(error.localizedDescription)")
        }
    })
}

最終我的目標是將html集合轉換為Swift字符串數組。 我怎么做? 我非常歡迎JSON解決方案(可能使用Alamofire),但我簡化了我的方法,首先讓一些工作正常。 (我過去和Alamofire一起工作過,但沒有那么多JSON)。 如果我在打印之前嘗試查看變量,我得到:

po html
error: Execution was interrupted, reason: EXC_BAD_ACCESS (code=1, address=0xfffffffffffffff8).
The process has been returned to the state before expression evaluation.

我在這個問題上確實有兩個問題:

1)如何將HtmlCollection轉換為數組?

2)當我嘗試使用WKWebView的javascript調用結果時,為什么會出現異常。

我解決了這個難題的第一部分,所以我將在此處記錄並關閉它。 一旦我對JavaScriptCore有了更好的處理(我希望最終的解決方案在於),我將發布一個新問題並從這里交叉引用該問題/解決方案。

如果我在Safari中的Web Inspector控制台中輸入以下內容,我希望從HtmlCollection轉換為Array:

Array.prototype.slice.call(document.getElementById('qlist-wrapper').getElementsByClassName('question-summary narrow'));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM