代码之家  ›  专栏  ›  技术社区  ›  Dave

是否可以调用将值返回给javascript的Objective-C函数?

  •  0
  • Dave  · 技术社区  · 7 年前

    我想在iOS Objective-C webview应用程序中使用JavaScriptCore/JSContext向javascript函数返回一个值。

    例如,在javascript中: var retVal = myObjC.returnSomething();

    哪里 returnSomething 是目标C函数。为了便于讨论,假设它向javascript函数返回一个字符串。

    我能够调用不返回值的Objective-C函数,但无法找到任何描述如何返回值的内容。

    这在JavaScriptCore中是可能的,还是我采取了错误的方法?我需要javascript等待返回值(同步)。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Tamil Selvan R    7 年前

    正如您所期望的那样,使用 stringByEvaluatingJavaScriptFromString /将数据从JS传递到Obj C use JSContext

    <!-- save as .html and load into UIWebview -->
    
        <!DOCTYPE html>
        <html>
        <head>
        <script>
        function loadData(x){
        alert(x);
        }    
        function myMeg(){   
        passDatatoObjC("success");    
        }
        </script>
        </head>
        </html>
    
        function returnSomething(x){
        loadData(x);
        }
    
        function passDatatoObjC(x){
        passDatatoObjC(x);    
        }
    
        #pragma mark - UIWebview dataource
    
        -(void)webViewDidFinishLoad:(UIWebView *)webView{
    
          [self.svgWebMapView   stringByEvaluatingJavaScriptFromString:@"returnSomething(10)"];
    
          JSContext *context =  [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
        context[@"passDatatoObjC"] = ^(NSString *msg) {
        NSLog(@"%@",msg);
    
        });
        }