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