4

我正在从 UIWebView 中的 webarchive(在桌面 Safari 中创建)加载一些 Wikipedia 页面。这允许页面可以离线使用。

但是,由于某种原因,脱机时无法加载图像。似乎它们是从网站加载的。

过去一切正常,我注意到这个问题只影响维基百科更新其移动网站格式后创建的新网络档案。

这很奇怪,因为如果我在我的计算机上打开网络存档,而不是在 iOS 中,图像会在离线时加载。

知道这里发生了什么吗?

我正在使用以下代码加载 webarchive:

NSString *fileName=[[NSString alloc] initWithFormat:@"%@", appDelegate.urlName];

NSString *htmlPath=[[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:fileName];

NSURL *url=[NSURL URLWithString:[htmlPath lastPathComponent] relativeToURL:[NSURL fileURLWithPath:[htmlPath stringByDeletingLastPathComponent] isDirectory:YES]];

[self.myWebView loadRequest:[NSURLRequest requestWithURL:url]];

更新:我还发现,在移动 wikipedia 网站制作的移动 Safari 中加载 webarchive 会导致 iOS 7 崩溃。

这是一个导致问题的新网络存档的链接,以及一个运行良好的旧版本维基百科的链接。我已将文件扩展名更改为“plist”,以便可以轻松编辑它们。改回“webarchive”进行测试。

(新)https://dl.dropboxusercontent.com/u/20616325/Badger%20%28NEW%29.plist

(旧)https://dl.dropboxusercontent.com/u/20616325/Badger%20%28OLD%29.plist

4

2 回答 2

3

即使您将页面添加为“完整网页”,其中图像单独存储并具有它们的相对路径。它不会加载它们,因为它们将奇怪的代码添加到 omg 标签中,例如

<img alt=".." src="relative_path(//upload.. in the relapse)" srcset="tahat_causes_problems" data-file-width="" data-file-height="" />

srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/82/Taxidea_taxus_%28Point_Reyes%2C_2007%29.jpg/330px-Taxidea_taxus_%28Point_Reyes%2C_2007%29.jpg 1.5x, //upload.wikimedia .org/wikipedia/commons/thumb/8/82/Taxidea_taxus_%28Point_Reyes%2C_2007%29.jpg/440px-Taxidea_taxus_%28Point_Reyes%2C_2007%29.jpg 2x" data-file-width="2124" data-file-height ="1416"

我向 Xcode 项目添加了一个完整的网页,其中包含赖特相对路径,加载到 webView,没有 IMGAES。但是当我摆脱这个 srcset=".." 和其他的时候它加载得很好。

于 2015-03-22T05:06:09.373 回答
2

伊尔纳尔是正确的。扩展他的答案,iOS7 srcset 支持不支持属性 srcset这很可能是导致您看到的崩溃的原因。

Srcset 用于在一个图像标签中为不同的设备尺寸提供多个图像链接。开头有 javascript 可以为图像找到正确的 srcreturn'srcset'in new Image();

新的网络档案使用这个标签来提供 3 张图片的链接。OLD webarchive 只是使用标签来指向一个 URL。

iOS8 应该支持 Srcset,但看起来 wikipedia 使用了 1.5x 和 2x 的分辨率标签。

`srcset="//upload.wikimedia.org/wikipedia/commons/thumb/8/82/Taxidea_taxus_%28Point_Reyes%2C_2007%29.jpg/270px-Taxidea_taxus_%28Point_Reyes%2C_2007%29.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/8/82/Taxidea_taxus_%28Point_Reyes%2C_2007%29.jpg/360px-Taxidea_taxus_%28Point_Reyes%2C_2007%29.jpg 2x

Webkit(Safari 的主干)仅支持整数(1x、2x、3x)。所以这可能会导致 iOS 8 上的加载失败。

于 2015-03-23T21:39:31.057 回答