本篇只讲JS给OC传值
前端 JS这么写
var testFunc = function test1 ( ) {
var value = 'test';
return value;
}
OC这样接收
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
// 1. 执行 js方法
JSValue *square = [context evaluateScript:@"testFunc()"];
// 2. 接收值
JSValue *value = context[@"testFunc"];
NSString *str = value.toString;
如果是数组
JS这么写
var testFunc = function test1 ( ) {
var leixing = 666;
var id = 123;
var arr = new Array(leixing, id);
return arr;
}
OC这么写
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
// 1. 执行 js方法
JSValue *square = [context evaluateScript:@"testFunc()"];
// 2. 接收值
JSValue *value = context[@"testFunc"];
NSArray *arr = value.toArray;
如果是字典、带下标数组
JS这么写
var testFunc = function test1 ( ) {
var lx = 666;
var id = 123;
var obj = new Object();
arr['lx'] = Leixing1;
arr['id'] = oppid;
return obj;
}
OC这么写
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
// 1. 执行 js方法
JSValue *square = [context evaluateScript:@"testFunc()"];
// 2. 接收值
JSValue *value = context[@"testFunc"];
NSDictionary *dict = value.toDictionary;
当然也可以把js代码写到OC里
NSString *textJS = @"var testFunc = function test1 () { var value = 'test'; return value; }";
[self.webView stringByEvaluatingJavaScriptFromString:textJS];
或者
// 获取上下文
JSContext *context = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
// 编写js代码
NSString *textJS = @"var testFunc = function test1 () { var value = 'test'; return value; }";
// 添加到上下文
[context evaluateScript:textJS];
// 执行js方法 获取返回值
JSValue *square = [context evaluateScript:@"hellFun()"];
// 得到返回值
NSString *str = value.toString;
网友评论