美文网首页
iOS开发中JS给OC传参/传值/

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

作者: 一切都是幻觉 | 来源:发表于2017-08-22 11:18 被阅读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;
    

    相关文章

      网友评论

          本文标题:iOS开发中JS给OC传参/传值/

          本文链接:https://www.haomeiwen.com/subject/higkdxtx.html