iOS8以下大家用的UIWebView
1、JS调用iOS
ios 端声明方法 TryClothes 并在block中处理js调用函数是发过来 的参数
JSContext* context = [self.mainWebView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; context[@"TryClothes"] = ^() { NSArray *args = [JSContext currentArguments]; if (args.count>0) { JSValue *jsVal = args[0]; NSDictionary *dic = jsVal.toDictionary; NSLog(@"%@", dic); }H5端调用方法:
TryClothes(str1,str2);
2、iOS调用js
js实现function
function testClick(str1,str2) { }ios 调用
//首先创建JSContext 对象(此处通过当前webView的键获取到jscontext) JSContext *context=[webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; NSString *jsFunctStr1=@"testClick('参数a','参数b')"; [context evaluateScript:jsFunctStr1];
iOS8以上 用wkwebview
1、JS调用iOS
ios 端声明方法 TryClothes 并在block中处理js调用函数是发过来 的参数
首先要在wkwebview定义是声明方法
// 创建一个webiview的配置项 WKWebViewConfiguration *config = [[WKWebViewConfiguration alloc]init]; // Webview的偏好设置 // 设置偏好设置 config.preferences = [[WKPreferences alloc]init]; // 默认为0 config.preferences.minimumFontSize = 10; // 默认认为YES config.preferences.javaScriptEnabled = YES; // 在iOS上默认为NO,表示不能自动通过窗口打开 config.preferences.javaScriptCanOpenWindowsAutomatically = NO; // 通过JS与webview内容交互 config.userContentController = [[WKUserContentController alloc]init]; // 注入JS对象名称AppModel,当JS通过AppModel来调用时, // 我们可以在WKScriptMessageHandler代理中接收到 [config.userContentController addScriptMessageHandler:self name:@"TryClothes"]; _wkWebView = [[WKWebView alloc] initWithFrame:CGRectMake(0, 0, winsizeW, winsizeH-55-64) configuration:config];
在wkwebview的代理方法里面处理
#pragma mark -@protocol WKScriptMessageHandler <NSObject> - (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message { NSLog(@"WKScriptMessageHandler。message.name = %@", message.name); UserInfo *userinfo = [UserInfo unarchiveObject]; if ([message.name isEqualToString:@"TryClothes"]) { // 打印所传过来的参数,只支持NSNumber, NSString, NSDate, NSArray, // NSDictionary, and NSNull类型 NSLog(@"%@", message.body); NSDictionary *dic = message.body; } }
JS调用的方法
//JS响应方法列表 function btnClick1() { window.webkit.messageHandlers.TryClothes.postMessage(null) }
2、iOS调用js
js声明方法
//JS响应方法列表 function btnClick1(参数) { }iOS调用的方法:
NSString *jsFunctStr1=[NSString stringWithFormat:@"btnClick1('%@')",@“参数”]; QLOG(@"jsFunctS", jsFunctStr1); [self.wkWebView evaluateJavaScript:jsFunctStr1 completionHandler:nil];
转载于:https://www.cnblogs.com/KingQiangzi/p/6133911.html
相关资源:iOS OC-JS完美交互