在WKWebView中,我们可以使用webkit消息处理程序调用ObjectiveC /
swift代码
例如:webkit.messageHandlers.< handler> .pushMessage(message)
例如:webkit.messageHandlers.< handler> .pushMessage(message)
它适用于没有参数的简单的JavaScript函数.但;
>可以使用JS回调函数调用本机代码作为参数吗?
>是否可以从本地代码返回一个值到JS函数?
解决方法
不幸的是,我找不到本地解决方案.
但以下解决方法解决了我的问题
使用JavaScript承诺&您可以从iOS代码中调用resolve功能.
UPDATE
这是你如何使用承诺
在JS中
this.id = 1;
this.handlers = {};
window.onMessageReceive = (handle,error,data) => {
if (error){
this.handlers[handle].resolve(data);
}else{
this.handlers[handle].reject(data);
}
delete this.handlers[handle];
};
}
sendMessage(data) {
return new Promise((resolve,reject) => {
const handle = 'm'+ this.id++;
this.handlers[handle] = { resolve,reject};
window.webkit.messageHandlers.<yourHandler>.postMessage({data: data,id: handle});
});
}
在iOS中
调用window.onMessageReceive函数与适当的处理程序id