javascript - 返回值javascript UIWebView

标签 javascript iphone

我正在尝试使用 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/

相关文章:

javascript - 使用 PHP 在浏览器中有条件地呈现 Javascript 函数调用

javascript - 如何从 MathJAX.js 获取 MathExpression

javascript - 当您更改屏幕分辨率时,有没有办法在 bootstrap 3 上订购两个 div : image, 和文本?

iphone - 试图触摸位于我的标记顶部的 CALayer

iphone - Tokyo Cabinet 与 iPhone 上的 SQLite3

javascript - 类 'B' 错误地扩展了基类 'A'(两个私有(private)方法命名相同)

Javascript 与 onclick 和 onmouseout 冲突

iphone - 截至 2012 年,在 iOS 4 上实现自定义导航栏样式的最佳方式是什么

iphone - 我如何在cocos2d中使用瓦片坐标而不是常规坐标

ios - Google IOS 分析 V3 未在仪表板上注册