从 [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) How do I get an HtmlCollection converted into an Array? and
2) Why am I getting exceptions when I try to work with the results of
my javascript call from the WKWebView.
我解决了这个难题的第一块,所以我会在这里记录下来并关闭它。一旦我更好地处理了 JavaScriptCore(我期望最终解决方案所在),我将 post 一个新问题并从此处交叉引用 question/solution。
如果我在 Safari 的 Web Inspector 控制台中键入以下内容,我将获得从 HtmlCollection 到 Array 的所需转换:
Array.prototype.slice.call(document.getElementById('qlist-wrapper').getElementsByClassName('question-summary narrow'));
我一直在努力解决这个问题。我有一个有效的 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) How do I get an HtmlCollection converted into an Array? and
2) Why am I getting exceptions when I try to work with the results of my javascript call from the WKWebView.
我解决了这个难题的第一块,所以我会在这里记录下来并关闭它。一旦我更好地处理了 JavaScriptCore(我期望最终解决方案所在),我将 post 一个新问题并从此处交叉引用 question/solution。
如果我在 Safari 的 Web Inspector 控制台中键入以下内容,我将获得从 HtmlCollection 到 Array 的所需转换:
Array.prototype.slice.call(document.getElementById('qlist-wrapper').getElementsByClassName('question-summary narrow'));