在iOS 13及以下版本中,WKWebView如何调用异步Javascript函数(即返回承诺的函数)?
然而,iOS 14已经实现了,如何在iOS 13或更低版本中实现这一点 例如,假设JS的函数定义为:在iOS 13及以下版本中,WKWebView如何调用异步Javascript函数(即返回承诺的函数)?,javascript,ios,swift,asynchronous,wkwebview,Javascript,Ios,Swift,Asynchronous,Wkwebview,然而,iOS 14已经实现了,如何在iOS 13或更低版本中实现这一点 例如,假设JS的函数定义为: function upperCaseAsync(text) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(text.toUpperCase()); }, 300); }); } 如何调用和处理最终承诺的结果?我尝试使用,但它抛出一个错误: Error
function upperCaseAsync(text) {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve(text.toUpperCase());
}, 300);
});
}
如何调用和处理最终承诺的结果?我尝试使用,但它抛出一个错误:
Error Domain=WKErrorDomain Code=5“JavaScript执行返回的结果类型不受支持”
您需要注册回调处理程序,并将JS函数从返回
Promise
更改为发布webkit
消息:webkit.messageHandlers['smth'].postMessage('some info if needed')
let script=WKUserScript(源:,注入时间:,atDocumentStart,FormInframeOnly:false)
.configuration.userContentController.addUserScript(脚本)
.configuration.userContentController.add(,名称:“smth”)
扩展名:WKScriptMessageHandler{
func userContentController(userContentController:WKUserContentController,didReceive消息:WKScriptMessage){
切换消息名{
案例“smth”:
休息一下
违约:
返回
}
}
}
是的,我在想这个,但希望有更好的方法。非常感谢。