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

标签 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();") //一个对象 { x: 0, y: 0, width: 0, height: 0, top: 0, right: 0, Bottom: 0, left: 0 }

我收到此错误,

Optional(Error Domain=WKErrorDomain Code=5 "execute JavaScript unsupported return type" UserInfo={NSLocalizedDescription=execute JavaScript unsupported return type}) nil

如有任何帮助,我们将不胜感激,谢谢。

最佳答案

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

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

 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]
        }
    }

关于javascript - 执行 javascript 时不支持的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43624174/

相关文章:

javascript - Chrome : Print exception details to console

javascript - 通过PHP从数据库输出PDF并通过Javascript显示

javascript - 使用运行 php 代码的 ajax 更改按钮

javascript - 使用没有表单的Jquery ajax上传文件

javascript - TypeScript 错误 '(response) => void' 类型的参数不可分配给 '(value: void) => void | PromiseLike<void>' 类型的参数

ios - 发送到 Swift 中的 firebase 云函数后,字典对象数组会发生变化吗?

ios - KeychainItemWrapper 未在 iOS 9 OSStatus -34018 上加载(errSecMissingEntitlement)

ios - 混合 Swift 和 Objective C : "ProjectName-Swift.h" file not found

java - 一个接口(interface)有两个类型参数。我可以实现两种类型相同的接口(interface),以便它们兼容吗?

haskell - 为什么 Haskell 允许这种递归 (?) 类型?