iOS开发中JS给OC传参/传值/

2017-08-22  本文已影响539人  一切都是幻觉

本篇只讲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;
上一篇下一篇

猜你喜欢

热点阅读