我正在尝试return "hello"
使用iPhone SDK 获取javascript函数的返回值(例如:).
在OS X上,WebView方法-stringByEvaluatingJavaScriptFromString
返回包含js函数返回值的NSString,但在iPhone上没有返回任何值.
我怎么解决这个问题?
我找到了一个私有的UIWebViewDelegate方法
- (void)webView:(id)fp8 runJavaScriptAlertPanelWithMessage:(id)fp12 initiatedByFrame:(id)fp16
在js脚本中使用alert()函数时调用.所以我只需通过调用即可获得"返回"值alert(myReturValue)
.
这并不能解决我的问题,因为我在公共SDK中需要一些东西.
返回字符串是最后一个Javascript语句的结果.千万不能把return
它前面!
对我有用的最小代码:
UIWebView *webView = [[UIWebView alloc] initWithFrame:CGRectZero]; [self.view addSubview:webView]; NSString *result = [webView stringByEvaluatingJavaScriptFromString: @"function f(){ return \"hello\"; } f();"]; NSLog(@"result: '%@'", result); // 'hello' [webView release];
所以我不得不将UIWebView*
视图添加到视图中(否则它会在之后崩溃),但不必将任何内容加载到webview中.
请注意,最后一个语句只是" f();
",因此返回的字符串将包含评估结果f()
.
当我尝试从谷歌地图API调用一些函数时,我遇到了同样的问题.
返回对象时出现问题,所以我通过函数toString()解决了它.
NSString *result = [webView stringByEvaluatingJavaScriptFromString: @"map.getBounds().toString();"];