# JS与WKWebview交互

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..postMessage() 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地址

你可能感兴趣的:(# JS与WKWebview交互)