【问题标题】:Passing large data to UIWebView javascript from Objective-C从 Objective-C 将大数据传递给 UIWebView javascript
【发布时间】:2013-08-30 22:14:42
【问题描述】:

我有一个应用程序,它使用 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”就好了。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript ios objective-c uiwebview


    【解决方案1】:

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

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

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

    【讨论】:

    • 返回的数据小于 64kb,并且该 JavaScript 中的唯一代码是登录到控制台。 NSLog 执行良好。
    猜你喜欢
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 2010-09-19
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2011-05-20
    相关资源
    最近更新 更多