我们使用的是有时在我们的应用webarchives,因为它是存储HTML +所有相关图像/ CSS /脚本/等桌面上的一个文件里面,把它转化项目,然后将其加载到带有一个UIWebView非常方便的方式单呼这样的:
NSData *webArchiveData = /* ... Load data from a single file ... */ ;
[webView
loadData:webArchiveData
MIMEType:@"application/x-webarchive"
textEncodingName:@"utf-8"
baseURL:nil
];
这停在iOS 6然而工作:在HTML被加载,而是通过相对URL引用的图像不再显示。
我从webarchive内的一些JavaScript location.href追查,发现在iOS 5和降低这是保存为webarchive原始的HTML的URL。 它被作为基本URL,所以从HTML(图片等)引用的资源的相对URL可以解决webarchive内正确,然后找到(因为它们与原来的绝对URL存储在那里)。
在iOS 6然而跟踪location.href给出的网址像applewebdata://1B648BC1-F143-4245-A7AD-6424C3E3D227
,让所有相对URL是相对于这个解决过程中,不能在webarchive找到了。
我发现其中的变通办法是从什么不同为零传递到loadData:MIME类型:textEncodingName::,基本URL是这样的:
[webView
loadData:serializedWebArchive
MIMEType:@"application/x-webarchive"
textEncodingName:@"utf-8"
baseURL:[NSURL URLWithString:@"file:///"] // Passing nil here won't work on iOS 6
];
它适用于双方的iOS 6和iOS 5和倾倒location.href像以前一样给原始的HTML的相同的绝对URL。
任何缺点/建议吗?
文章来源: UIWebView on iOS 6 does not display images with relative URLs in webarchives