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

本篇只讲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;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,020评论 25 708
  • 前言 2016年4月21日,阿里巴巴在Qcon大会上宣布跨平台移动开发工具Weex开放内测邀请。Weex能够完美兼...
    一缕殇流化隐半边冰霜阅读 39,056评论 135 366
  • 灰绿的根须断裂了/松脂也凝固/树被风吹着/在空中飞舞/开出紫色的钻石/然而这并没有什么卵用/并没有。
    云雀儿阅读 291评论 0 0
  • 安安静静的待在哪里 一个人静静的等着 直到变为一个稻草人 不后悔 但遗憾 那流去的时光
    梦梦2016zrny阅读 165评论 4 1
  • 认真阅读稻盛和夫老师的《活法》一书,可以发现许多人生大智慧,比如“人生·工作结果=思维方式*热情*能力”这一...
    北辕南辙阅读 267评论 0 0