当前位置: 移动技术网 > IT编程>开发语言>JavaScript > iOS WKWebView JS交互

iOS WKWebView JS交互

2020年09月20日  | 移动技术网IT编程  | 我要评论
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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网