在WKWebView中,我们可以使用webkit消息处理程序来调用ObjectiveC/swift代码
例如:webkit.messageHandlers.<handler>.pushMessage(message)
它非常适合没有参数的简单javascript函数。但;

  • 是否可以使用JS回调函数作为参数来调用 native 代码?
  • 是否可以从 native 代码向JS函数返回值?
  • 最佳答案

    不幸的是,我找不到 native 解决方案。

    但是以下解决方法解决了我的问题

    使用JavaScript Promise,您可以从iOS代码中调用resolve函数。

    更新

    这就是您可以使用 promise 的方式

    在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中

    使用适当的处理程序ID调用window.onMessageReceive函数

    09-19 14:02