iphone uiwebview下载包含CSS和图像的完整页面

Min*_*ael 6 iphone webpage download complete uiwebview

在我的应用程序中有一个加载网址的uiwebview.我使用以下行来保存本地加载的页面的HTML,以便能够脱机查看它.

NSString* html=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('html')[0].innerHTML"]
Run Code Online (Sandbox Code Playgroud)

问题只是保存文档的HTML,我想保存图像和CSS以及HTML,以便用户看到页面就像他在线一样.

就像"保存网页完成"或类似的东西,我们曾经在浏览器中使用过.

感谢您的帮助.

Ken*_*ker 4

没有简单的方法。使用 RegexKitLite ( http://regexkit.sourceforge.net/RegexKitLite/index.html )对 HTML 进行正则表达式,并将所有 url 抓取到 .jpg、.gif、.png、.css 和 .js 以及您需要的所有其他内容。

或者,致电:

NSString* imgUrls=[webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('img')"]
Run Code Online (Sandbox Code Playgroud)

或者类似的东西,我不是 javascript 高手...然后处理所有返回的内容;)

对不起。这是后脑勺的痛苦。

编辑:

保存 iPhone 上的所有 img,同时保存 html 文件。当您想要重新加载页面时,将文件中的 html 加载到字符串中,然后使用

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL
Run Code Online (Sandbox Code Playgroud)

加载 HTML 字符串。baseURL 用于指定 webview 想象的 html 字符串所在的目录或站点。所有 URL 都与此相关。

当然,请注意,这对于绝对 URL 来说效果不佳,仅适用于相对 URL。所以,在你的 html 文件中,这会让事情变得更糟:

<img src="http://google.com/f/r/i/g/img.gif">
Run Code Online (Sandbox Code Playgroud)

虽然这样就可以了:

<img src="f/r/i/g/img.gif">
Run Code Online (Sandbox Code Playgroud)

再说一遍,整个解决方案很糟糕。您可能会研究一个预先存在的开源递归 html 蜘蛛。我认为 wget 可以满足您的要求,但我怀疑它是否可以轻松地为 iPhone 编译。