我到处找这个,什么也找不到。 基本上,我需要整个网站存储我的iPhone里面的一些有趣的原因。 不管我无法弄清楚如何在我的UIWebView中正确显示。
编辑:我要澄清,我可以加载原始的HTML文件,我已经chagned所有的寻路的是本地的,除了没有在被链接。
下面是代码
self.dataDetectorTypes = UIDataDetectorTypeLink;
NSString *path = [[NSBundle mainBundle] pathForResource:@"index" ofType:@"html"];
NSURL *url = [NSURL fileURLWithPath:path];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self loadRequest:request];
的index.html有一堆的<script type="text/javascript" src="somescript.js">
JS代码没有被执行
看起来你从你的包里面加载HTML。 这意味着所有其他文件(.js文件,名为.css,任何媒体和文件),也需要存在于你的包。 因此,要检查的第一件事就是看你的可执行文件里面的内容,并确保JS等文件都包括在内。
如果这看起来不错,检查接下来的事情是,如果HTML,JS,CSS或文件引用通过相对或绝对URL的内容。 如果有在web内容的绝对路径引用然后UIWebView的是要尽量每次下载的内容,所以当你有一个网络连接它只会工作。 如果路径是相对的,然后它会看在束,看是否存在这样的文件。
当您在HTML和内容到XCode项目文件,你可能拖累文件(S)到项目的侧边栏并询问是否“递归创建任何添加的文件夹组”或“创建任何附加文件夹引用文件夹“。
默认的是第一个,这意味着Xcode创建项目中的黄色文件夹,但是当时间来产生输出束将忽略磁盘上的目录层次结构。 如果您选择第二个选项,那么该文件夹是蓝色的,如果你在你的输出束看,你会看到整个文件夹层次结构已被复制。
对于简单的网页的首部作品,一切都是在同一个文件夹级别,你可以使用你上面所列内容加载它的方法。 第二种情况更好地工作,如果你的网页是复杂和子文件夹的内容引用在这种情况下,你需要加载从一个相对路径的网页(比如,在“网页”文件夹中):
NSString *path = [[NSBundle mainBundle]
pathForResource:@"index" ofType:@"html"
inDirectory:@"webpages"];
检查的最后一件事是,如果有在HTML文件中的任何BASE标签。 这是指定页面上的所有链接的默认地址或目标的一种方式,但它可以弄脏的WebView链接。
问题是,这一呼吁:
NSURL *url = [NSURL fileURLWithPath:path];
不设置一个基本URL和东西像JavaScript,CSS,图像等不工作.html文件,以便相对路径。
相反,使用此:
url = [NSURL URLWithString: [path lastPathComponent]
relativeToURL: [NSURL fileURLWithPath: [path stringByDeletingLastPathComponent]
isDirectory: YES]];
然后IFF它们将被复制到包旁边的.html文件之类的东西在index.html文件“styles.css的”会被发现。
您需要设置:
myWebView.dataDetectorTypes = UIDataDetectorTypeLink
确保.js文件是在你的副本中的资源在编译部分组部分,而不是。 Xcode中默认情况下它们置于编译小组。
当字典添加pathFor资源,它会显示一个零字符串错误。
我的尝试是出了Xcode项目文件中运行整个网页。 要做到这一点,你必须:
导入文件时,选择“创建任何添加的文件夹文件夹引用”。
设置Web视图,但要确保如前面提到的,你设置的相对路径。
NSString *path = [[NSBundle mainBundle] pathForResource:@"filename" ofType:@"html" inDirectory:@"Directory"]; NSURL *url = [NSURL URLWithString:[path lastPathComponent] relativeToURL: [NSURL fileURLWithPath: [path stringByDeletingLastPathComponent] isDirectory:YES]]; NSURLRequest *request = [NSURLRequest requestWithURL:url]; [self.currentWebView loadRequest:request];