我有一个应用程序,它使用 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”就好了。
如有任何帮助,我们将不胜感激。
最佳答案
您更新后的签名是否大于 10MB 或执行时间超过 10 秒? documentation提到了这些限制。
还要记住 stringByEvaluatingJavaScriptFromString 的结果是执行的 Javascript,因此如果在执行时出现问题,您可能只会收到 nil。第一个示例中是否执行了 NSLog?
假设您遵守这些限制,我的建议是在 Javascript 中插入警报以确保它按您预期的方式执行。
关于javascript - 从 Objective-C 将大数据传递给 UIWebView javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18477740/