2

我有一个应用程序,它使用 UIWebView 显示 HTML 页面,从服务器加载。这很好用,包括加载额外数据的 Objective-C 部分,但是,不能将数据传递给在 WebView 中运行的 JavaScript。

我试过的是:

NSString * sigstring = [NSString stringWithFormat:@"updatedSig('%@');", [thisSignature base64EncodedString]];
sigstring = [sigstring stringByReplacingOccurrencesOfString:@"\n" withString:@""];

NSLog(@"WV: %@",[[[(AppDelegate*)[[UIApplication sharedApplication] delegate] viewController] webView] stringByEvaluatingJavaScriptFromString:sigstring]);

updatedSig 函数将传入的任何内容回显到控制台。

但是,在这种情况下,当控制台应该有数据时,它不会向控制台返回任何内容。

为了测试其他问题,我也尝试过

NSString * sigstring = [NSString stringWithFormat:@"updatedSig('%@');", @"AbsolutelyAnything"];
sigstring = [sigstring stringByReplacingOccurrencesOfString:@"\n" withString:@""];

NSLog(@"WV: %@",[[[(AppDelegate*)[[UIApplication sharedApplication] delegate] viewController] webView] stringByEvaluatingJavaScriptFromString:sigstring]);

这工作得很好,它在控制台中显示“AbsolutelyAnything”就好了。

任何帮助将非常感激。

4

1 回答 1

0

您更新的签名是否大于 10MB 或执行时间超过 10 秒?文档提到了这些限制。

还要记住,stringByEvaluatingJavaScriptFromString的结果是执行的 Javascript,因此如果在执行时出现问题,您可能只会收到 nil。NSLog 是否在第一个示例中执行?

假设您遵守这些限制,我的建议是在 Javascript 中插入警报,以确保它按您的预期执行。

于 2013-08-28T01:06:39.790 回答