执行javascript时不支持返回类型
我使用WKWebview.evaluateJavaScript()执行javascript,我可以从javascript中获取字符串、对象和数组执行javascript时不支持返回类型,javascript,ios,types,swift3,wkwebview,Javascript,Ios,Types,Swift3,Wkwebview,我使用WKWebview.evaluateJavaScript()执行javascript,我可以从javascript中获取字符串、对象和数组 evaluateJavaScript("document.getElementById('title').innerHTML;") /* output: Optional(hhhhhhhhhhhhhh) */ evaluateJavaScript("[1,2];") /* output: Optional(<__NSArrayM 0x17005
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('title').innerHTML;”)
/*
输出:
可选(HHHHHHHHHHHHHHHHHHH)
*/
evaluateJavaScript(“[1,2];”)
/*
输出:
可选的((
1.
2.
)
*/
evaluateJavaScript(“{a:1,b:2};”)
/*
输出:
可选的({
a=1;
b=2;
})
*/
当我执行这个代码时
evaluateJavaScript(“document.getElementById('test').getBoundingClientRect();”)
//{x:0,y:0,宽度:0,高度:0,顶部:0,右侧:0,底部:0,左侧:0}的对象
我得到这个错误
可选(错误域=WKErrorDomain代码=5“执行JavaScript不支持的返回类型”
UserInfo={NSLocalizedDescription=执行JavaScript不支持的返回类型})nil
感谢您的帮助。我想这里是
文档的结果。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]
}
}
不应该
{a:1,b:2};
是({a:1,b:2});
?{a:1,b:2};
在这里工作得很好。感谢这个解决方案,它帮助我解决了类似的问题。如果您的js字符串以[];
结尾,您也会很好的。干杯。