iOS开发-基础知识程序员

iOS WKWebview的OC与JS交互

2019-03-08  本文已影响94人  晴朗Nic

1、OC调JS的方法

JS要做的准备:

//提供给oc调用的JS方法
 function ocToJs()
  {
//随机改变页面的背景色
 var r=Math.floor(Math.random()*256);
 var g=Math.floor(Math.random()*256);
 var b=Math.floor(Math.random()*256);
 var randomColor = "rgb("+r+','+g+','+b+")";       
 document.body.style.backgroundColor = randomColor;
   }

OC要做的准备wkwebview调用evaluateJavaScript:

//OC-->JS
- (void)ocTakeJsMethod
{
    //OC调js的方法随机改变html页面的颜色
    NSString *ocToJs = @"ocToJs()";
    [self.myWebView evaluateJavaScript:ocToJs completionHandler:^(id _Nullable name, NSError * _Nullable error) {
        NSLog(@"方法调用完成回调");
    }];
}

2、JS调OC的方法

JS要做的准备实现一个方法:

 //js调OC的方法
function jsToOc()
{
//jsSendOcWithPrams是要在OC那边注册才可以的。

window.webkit.messageHandlers.jsSendOcWithPrams.postMessage({"oneParam":"传过去的参数内容"});
  }

OC要做的准备分为两步

第一步:要注册相应的方法提供给JS调用
//WKUserContentController注册一个html的方法
 [userController addScriptMessageHandler:self name:@"jsSendOcWithPrams"];
第二步:用代理接- (void)userContentController:(WKUserContentController *)userContentController
  didReceiveScriptMessage:(WKScriptMessage *)message收来自JS的方法
//JS-->OC
- (void)userContentController:(WKUserContentController *)userContentController
      didReceiveScriptMessage:(WKScriptMessage *)message
{
    NSLog(@"userContentControllerfdfjdik----%@---%@",message.body,message.name);
    
    if ([message.name isEqualToString:@"jsSendOcWithPrams"])
    {
        NSString *keyContent = message.body[@"oneParam"];
        UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"提示" message:keyContent preferredStyle:UIAlertControllerStyleAlert];
        [alertVC addAction:([UIAlertAction actionWithTitle:@"OC显示" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        }])];
        [self presentViewController:alertVC animated:YES completion:nil];
    }
}
详细可以参考demo:OC与js交互的demo
上一篇下一篇

猜你喜欢

热点阅读