iOS WKWebview的OC与JS交互

作者: 晴朗Nic | 来源:发表于2019-03-08 01:10 被阅读94次

    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

    相关文章

      网友评论

        本文标题:iOS WKWebview的OC与JS交互

        本文链接:https://www.haomeiwen.com/subject/litlpqtx.html