iOS WKWebview的OC与JS交互

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容