我不知道我已经阅读过多少个论坛,但我真的不知道为什么它不起作用!
我有一个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!
我希望你能给我一些提示。
答案 0 :(得分:3)
只需编写代码
即可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];
主要是提供基本网址作为mainBundle或文档目录。
答案 1 :(得分:3)
经过多次摆弄并阅读了大量答案之后,这是我简单的整合解决方案:
1)确保所有捆绑资源都是唯一的 - 目录变得扁平化
这非常令人沮丧,但是如果你有目录“About / index.html”和“Home / index.html”,那么被复制到捆绑包中的最后一个“index.html”将覆盖之前的。 / p>
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];