UIWebView – 使用链接的资源加载本地.html文件

我不知道有多less论坛已经阅读,但我真的不知道为什么它不工作!

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

用户可以在线阅读,否则他可以将其下载到Application Documents目录中以便后续阅读。

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

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

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

离线版本 – 保存到文件系统“文件夹”

在线版 – 直接从服务器 – 没关系!

我希望你能给我一些提示。

只需编写代码

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或文件目录。

在阅读了很多答案之后,下面是我简单的整合解决scheme:

1)确保你的所有bundle资源是唯一的 – 目录变得平坦

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

2)JavaScript文件将在错误的构build阶段

在Xcode中点击您的项目,然后点击您的应用程序目标,然后点击Build Phases。 请注意,JavaScript文件将错误地位于“编译源代码”中:将JS文件移动到“复制包资源”中。

3)使用UIWebView的loadRequest:

不要从string中加载。 改用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];