【问题标题】:return value javascript UIWebView返回值 javascript UIWebView
【发布时间】:2009-01-31 15:10:47
【问题描述】:

我正在尝试使用 iPhone SDK 获取 javascript 函数的返回值(例如:return "hello")。

在 OS X 上,WebView 方法 -stringByEvaluatingJavaScriptFromString 返回一个包含 js 函数返回值的 NSString,但在 iPhone 上没有返回值。

我该如何解决这个问题?


我找到了一个私有的 UIWebViewDelegate 方法

- (void)webView:(id)fp8 runJavaScriptAlertPanelWithMessage:(id)fp12 initiatedByFrame:(id)fp16

在 js 脚本中使用 alert() 函数时调用。所以我只需调用alert(myReturValue)就可以得到“返回”值。

这并不能解决我的问题,因为我需要公共 SDK 中的一些东西。

【问题讨论】:

    标签: javascript iphone


    【解决方案1】:

    返回字符串是最后一个 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* 添加到视图中(否则它会在之后崩溃),但不必将任何内容加载到 web 视图中。

    注意最后一条语句只是“f();”,所以返回的字符串将包含f()的评估结果。

    【讨论】:

      【解决方案2】:

      当我尝试从谷歌地图 API 调用一些函数时,我遇到了同样的问题。

      返回对象有问题,我通过函数toString()解决了。

      NSString *result = [webView stringByEvaluatingJavaScriptFromString:
                      @"map.getBounds().toString();"];
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多