是否可以调用 Objective-C 函数 returns 一个值 javascript?
Is it possible to call an Objective-C function that returns a value to javascript?
我想在 iOS Objective-C webview 应用程序中使用 JavaScriptCore / JSContext 来 return javascript 函数的值。
例如,在javascript中:var retVal = myObjC.returnSomething();
其中 returnSomething
是 Objective-C 函数。为了便于讨论,我们假设它 return 是 javascript 函数的一个字符串。
我已经能够调用 Objective-C 没有 return 值的函数,但是没能找到描述如何 return 值的任何内容.
使用 JavaScriptCore 甚至可以做到这一点,还是我采取了错误的方法?我需要 javascript 来等待 return 值(同步)。
如您所料,将数据从 obj C 传递到 JS 使用 stringByEvaluatingJavaScriptFromString/将数据从 JS 传递到 Obj C 使用 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);
});
}
我想在 iOS Objective-C webview 应用程序中使用 JavaScriptCore / JSContext 来 return javascript 函数的值。
例如,在javascript中:var retVal = myObjC.returnSomething();
其中 returnSomething
是 Objective-C 函数。为了便于讨论,我们假设它 return 是 javascript 函数的一个字符串。
我已经能够调用 Objective-C 没有 return 值的函数,但是没能找到描述如何 return 值的任何内容.
使用 JavaScriptCore 甚至可以做到这一点,还是我采取了错误的方法?我需要 javascript 来等待 return 值(同步)。
如您所料,将数据从 obj C 传递到 JS 使用 stringByEvaluatingJavaScriptFromString/将数据从 JS 传递到 Obj C 使用 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);
});
}