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

时间:2012-11-08 13:14:46

标签: javascript html ios uiwebview document

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

我有一个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!

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

2 个答案:

答案 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];