繁体   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