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