当前位置:  开发笔记 > 编程语言 > 正文

返回值javascript UIWebView

如何解决《返回值javascriptUIWebView》经验,为你挑选了2个好方法。

我正在尝试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中需要一些东西.



1> squelart..:

返回字符串是最后一个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().



2> 小智..:

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

返回对象时出现问题,所以我通过函数toString()解决了它.

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

推荐阅读
TXCWB_523
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有