【问题标题】:Strange webview + baseurl behaviour奇怪的 webview + baseurl 行为
【发布时间】:2011-10-28 02:21:36
【问题描述】:

这段代码片段:

NSString *content = @"<html><head></head><body bgcolor=#AAAAAA></body></html>";
[wv loadHTMLString:content baseURL:[NSURL URLWtihString:@""];

不适用于任何其他 baseURL,除了上面写的一个(即使是 nil)。这种行为使我无法在我的 webViews 中使用本地数据。任何人都可以对此提供任何帮助吗? 如果我设置任何其他 baseURL,内容只是没有被加载

【问题讨论】:

  • 您能显示您正在尝试使用的任何其他网址吗?
  • 我试过nil NSString *path = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]; NSURL *baseURL = [NSURL fileURLWithPath:path isDirectory:YES]; 例如。嗯,还有更多来自我在互联网上找到的不同示例

标签: iphone uiwebview base-url


【解决方案1】:

除了建议我在代码中使用的内容之外:

[webView loadHTMLString:[....
               baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];

我无能为力。使用[[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent] 是不正确的,因为这样你会向上移动并移出应用程序包,但既然你说你正在尝试许多变体,我不确定会是什么。

如果您想尝试解决您的 baseURL 发生的问题,请覆盖 webView:shouldStartLoadWithRequest: 并查看您的 Web 视图尝试打开哪些文件。

编辑:

如果您需要访问应用程序的 Library 文件夹,这是可行的方法 (source)

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);
NSString *libraryDirectory = [paths objectAtIndex:0];
[webView loadHTMLString:[....
               baseURL:[NSURL fileURLWithPath:libraryDirectory]];

无论如何,根据您的评论:“它们以前是由我的应用程序下载的”,您应该已经知道如何去那里...无论如何,我建议再次检查您要在webView:shouldStartLoadWithRequest: 中访问哪些文件。 .

【讨论】:

  • 我喜欢webView:shouldStartLoadWithRequest: 的黑客攻击!
  • 我试图从捆绑包中上移一级,因为我的本地文件位于库文件夹而不是资源中,因为它们之前是由我的应用程序下载的。但我也试过[[NSBundle mainBundle]bundlePath]。并且只是为了使列表完整 @"google.com" 为好。到目前为止没有运气。
  • 遗憾的是,它没有转到webView:shouldStartLoadWithRequest:,但似乎直接降落在webViewDidFinishLoad:
  • iOS下不能移出bundle(沙盒);查看我对库文件夹的编辑...您在上面发布的 HTML 实际上不需要任何外部文件...
  • 嗯,是的,但是我实际生成的那个又大又复杂,而这个片段也不能正常工作。感谢您编辑库文件夹,但通常我只想解决 baseurl 的问题。我认为我发布的有问题的简单 HTML 应该为任何 URL 加载,但事实并非如此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多