【问题标题】:UIWebView - Load a local .html file with linked resourcesUIWebView - 加载带有链接资源的本地 .html 文件
【发布时间】:2012-10-28 16:21:52
【问题描述】:

我不知道我已经阅读了多少个论坛,但我真的不知道为什么它不起作用!

我有一个 iPhone 应用程序,我想向我的用户展示一本 Epub 图书。

用户可以在线阅读,否则可以下载到Application Documents目录下阅读。

我将这个文件夹结构与在线版本相同,并将其保存到文件夹“frontend”中。

我也可以阅读这个维护的 .HTML 文件,但是链接的 JS/CSS 和 HTML 文件不起作用。

所以我有一些截图。我不知道,为什么 javascript 无法访问 .html 文档。

offline version - saved into the filesystem "document folder"

online version - directly from server - it's ok!

希望你能给我一些提示。

【问题讨论】:

  • 如果你在做一个原生应用,你可以使用这里描述的'bridge'stackoverflow.com/a/9640486/792677(拦截webView加载请求并在webView之外处理它们)。
  • 我使用 [webView loadRequest...] 从文档中显示我的 .html。此 .html 还具有指向 css / JS 和其他 html 文档的相对路径的引用链接。但它不起作用......
  • 你的意思是 js 和 css 根本不工作?然后您可能会发现同一问题的第二个答案中的链接很有用:stackoverflow.com/questions/5733883/…
  • 我认为问题在于,我的 html 结构不在 NSBundle 中。如果用户需要,我会动态生成它。它会存储在文档目录中,所以这个方法不起作用。
  • 我在应用程序文档文件夹中有这个文件夹结构:Application->Document->mlib->script->xxx.js 如果我的 index.html 已经加载到 web 视图中,是可以从他的 index.html 相对加载一个 .js???

标签: javascript html ios uiwebview document


【解决方案1】:

简单写代码

NSString *path = [[NSBundle mainBundle] pathForResource:@"offlineEpub" ofType:@"html"];
NSString *content = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
UIWebView *webView = [[UIWebView alloc] init];
[webView loadHTMLString:content baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];
[self.view addSubview:webView];

主要是提供基本 url 作为您的 mainBundle 或文档目录。

【讨论】:

    【解决方案2】:

    经过大量摆弄并阅读了很多答案,这是我的简单综合解决方案:

    1) 确保所有捆绑资源都是唯一的——目录被扁平化

    这非常令人沮丧,但是如果您有目录“About/index.html”和“Home/index.html”,最后一个要复制到包中的“index.html”将覆盖前一个。

    2) JavaScript 文件将处于错误的构建阶段

    在 Xcode 中单击您的项目,然后单击您的应用程序目标,然后单击 Build Phases。请注意,JavaScript 文件将错误地位于 Compiled Sources 中:将 JS 文件移动到 Copy Bundle Resources 中。

    3) 使用 UIWebView 的 loadRequest:

    不要从字符串加载。请改用 NSURL。

    NSBundle *mainBundle = [NSBundle mainBundle];
    NSURL *url = [mainBundle URLForResource:@"some_page" withExtension:@"html"];
    NSURLRequest *urlReq = [NSURLRequest requestWithURL:url];
    
    // Assuming you create an IBOutlet defined like:
    // @property (strong, nonatomic) IBOutlet UIWebView *wv;
    [self.wv loadRequest:urlReq];
    

    【讨论】:

      猜你喜欢
      • 2013-06-08
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多