欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

# JS与WKWebview交互

程序员文章站 2024-03-01 09:14:40
...

JS与WKWebview交互

1.ios调用js方法

比如js方法:


function callJS(x){

      alert(x);

      return "ok";

  }

ios执行这个方法并传值,同时接收js返回值“ok”:


[webView evaluateJavaScript:@"callJS('这是iOS消息')" completionHandler:^(id _Nullable item, NSError * _Nullable error) {

        NSLog(@"%@",item);

    }];

2.js调用ios方法

首先WKWebView像js注册一个方法:


WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc] init];

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:config];

[config.userContentController addScriptMessageHandler:self name:@"showMessage"];

这里注册了一个 showMessage 方法,

然后js发起调用并传了一个参数:


window.webkit.messageHandlers.showMessage.postMessage("js调用了iOS中的showMessage方法");

值得注意的是,js调用ios的方法固定格式为:


window.webkit.messageHandlers.<name>.postMessage(<messageBody>) for all

然后ios收到消息:


-(void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message

{

    //JS调用OC方法

    //message.boby就是JS里传过来的参数

    NSLog(@"body:%@",message.body);

    if ([message.name isEqualToString:@"showMessage"]) {



    }

}

demo地址