执行javascript时不支持的返回类型

时间:2017-04-26 02:51:17

标签: javascript ios types swift3 wkwebview

我使用WKWebview.evaluateJavaScript()来执行javascript,我可以从javascript获取字符串,对象和数组。

evaluateJavaScript("document.getElementById('title').innerHTML;")
/*
output:
Optional(hhhhhhhhhhhhhh)
*/

evaluateJavaScript("[1,2];")
/*
output:
Optional(<__NSArrayM 0x17005faa0>(
1,
2
)
*/

evaluateJavaScript("{a:1, b:2};")
/*
output:
Optional({
    a = 1;
    b = 2;
})
*/

我执行此代码时

evaluateJavaScript("document.getElementById('test').getBoundingClientRect();") //an object of { x: 0, y: 0, width: 0, height: 0, top: 0, right: 0, bottom: 0, left: 0 }

我收到此错误,

  

可选(错误域= WKErrorDomain代码= 5&#34;执行JavaScript不支持的返回类型&#34;   UserInfo = {NSLocalizedDescription =执行JavaScript不支持的返回类型})nil

任何帮助都会表示赞赏,谢谢。

1 个答案:

答案 0 :(得分:0)

我认为document.getElementById('liveMovie').getBoundingClientRect();的结果不是swift的支持。

所以我把它改成一个数组,就像这样,

 self.wk.evaluateJavaScript("var rect = document.getElementById('liveMovie').getBoundingClientRect();[rect.left, rect.top];") {
        (result, error) -> Void in
        if((result) != nil)
        {
            self.player?.view?.frame.origin.x = (result as! Array)[0]
            self.player?.view?.frame.origin.y = (result as! Array)[1]
        }
    }