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

iOS WKWebView JS交互

程序员文章站 2022-03-24 15:07:22
1.原生调用JS方法iOS实现代码//调用JS方法 并传值进去NSString * jsStr = [NSString stringWithFormat:@"javacalljswithargs("%@")", 传值参数];//执行js方法[self.WKWebView evaluateJavaScript:jsStr completionHandler:^(id _Nullable result, NSError * _Nullable error) { //回调 error==...

1.原生调用JS方法

iOS实现代码
//调用JS方法 并传值进去
NSString * jsStr = [NSString stringWithFormat:@"javacalljswithargs("%@")", 传值参数];
//执行js方法
[self.WKWebView evaluateJavaScript:jsStr completionHandler:^(id _Nullable result, NSError * _Nullable error) {
       //回调  error==nil 就是调用成功
        NSLog(@"error = %@",error);
}];


前端实现代码
//实现原生调用方法
function javacalljswithargs(arg) {
      //接收的的值
      alert(arg)
}

2.JS调用原生方法

iOS实现代码
//使用添加了ScriptMessageHandler的userContentController配置configuration
WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
//js调用原生 注入方法
WKUserContentController *userContentController = [[WKUserContentController alloc] init];
//上传图片 uploadImg 方法名称
[userContentController addScriptMessageHandler:self name:@"uploadImg"];
configuration.userContentController = userContentController;
//添加配置
_WKWebView = [[WKWebView alloc]initWithFrame:self.view.frame configuration:configuration];

//实现 WKScriptMessageHandler 协议方法
#pragma mark -- js调用原生方法
- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    //调用的JS方法名称
    NSString * jsName = message.name;
    NSLog(@"jsName --- %@",jsName);
    //message.body 是JS传过来的值
    //判断是哪个方法过来的回调
    if ([jsName isEqualToString:@"uploadImg"]) {
        //原生操作
    }
}



前端实现代码
//需要在JS对应的点击事件中调用
//安卓
window.testInterface.uploadImg();
//ios 必须传一个值 空值也可以 不然原生会接收不到方法
window.webkit.messageHandlers.uploadImg.postMessage("1")


本文地址:https://blog.csdn.net/sx_1024/article/details/108691735

相关标签: JS iOS webview