我正在尝试使用 iPhone SDK 获取 javascript 函数的返回值(例如:return "hello"
)。
在 OS X 上,WebView 方法 -stringByEvaluatingJavaScriptFromString
返回一个包含 js 函数返回值的 NSString,但在 iPhone 上没有返回值。
我该如何解决这个问题?
我找到了一个私有(private)的 UIWebViewDelegate 方法
- (void)webView:(id)fp8 runJavaScriptAlertPanelWithMessage:(id)fp12 initiatedByFrame:(id)fp16
在js脚本中使用alert()函数时调用。因此,我只需调用 alert(myReturValue)
即可获得“返回”值。
这并不能解决我的问题,因为我需要公共(public) 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*
添加到 View 中(否则它会在之后崩溃),但不必将任何内容加载到 webview 中。
请注意,最后一条语句只是“f();
”,因此返回的字符串将包含 f()
的计算结果。
关于javascript - 返回值javascript UIWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/498965/