在WKWebView中,我们可以使用webkit消息处理程序来调用ObjectiveC / swift代码,例如: webkit.messageHandlers.<handler>.pushMessage(message)
webkit.messageHandlers.<handler>.pushMessage(message)
它非常适合没有参数的简单javascript函数。但;
不幸的是,我找不到本机解决方案。
但是以下解决方法解决了我的问题
使用JavaScript Promise,您可以从iOS代码中调用resolve函数。
更新
这是您可以使用诺言的方式
在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 调用函数
window.onMessageReceive