我不知道我已经阅读了多少个论坛,但我真的不知道为什么它不起作用!
我有一个iPhone应用程序,我想向用户展示一本Epub书。
用户可以在线阅读,否则他可以下载到应用程序文档目录中以后阅读。
我建立了与在线版本相同的文件夹结构,并将其保存到文档文件夹“frontend”中。
我也可以阅读此维护的.HTML文件,但链接的JS / CSS和HTML文件无法正常工作。
所以我有一些屏幕截图。我不知道为什么JavaScript无法访问.html文档。
我希望你能给我一些提示。
我不知道我已经阅读了多少个论坛,但我真的不知道为什么它不起作用!
我有一个iPhone应用程序,我想向用户展示一本Epub书。
用户可以在线阅读,否则他可以下载到应用程序文档目录中以后阅读。
我建立了与在线版本相同的文件夹结构,并将其保存到文档文件夹“frontend”中。
我也可以阅读此维护的.HTML文件,但链接的JS / CSS和HTML文件无法正常工作。
所以我有一些屏幕截图。我不知道为什么JavaScript无法访问.html文档。
我希望你能给我一些提示。
经过大量的尝试和阅读很多答案,这是我的简单综合解决方案:
1) 确保所有捆绑资源都是唯一的——目录被展平
这真的很令人沮丧,但如果你有“关于/index.html”和“主页/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];
只需编写代码
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或documents目录。