我想在iOS Objective-C webview应用程序中使用JavaScriptCore / JSContext将值返回给javascript函数。
例如,在javascript:var retVal = myObjC.returnSomething();
其中returnSomething
是Objective-C函数。为了便于讨论,我们假设它将字符串返回给javascript函数。
我已经能够调用不会返回值的Objective-C函数,但却无法找到任何描述如何返回值的函数。
使用JavaScriptCore甚至可以实现这一点,还是我对此采取了错误的方法?我需要javascript来等待返回值(同步)。
答案 0 :(得分:2)
正如您所期望的那样,将数据从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);
});
}