我正在保存 UIWebView
的内容,以便在下次启动时显示它,而不是再次加载它。这就是我正在做的:
NSString *activityesContent = [webView stringByEvaluatingJavaScriptFromString:@"document.body.outerHTML"];
[[NSUserDefaults standardUserDefaults]setObject:activityesContent forKey:@"activityesContent"];
对于下一次发布,我将这样做:
[_tgWebView loadHTMLString:[[NSUserDefaults standardUserDefaults]objectForKey:@"activityesContent"] baseURL:nil];
这会加载页面,但没有任何 JavaScript 或 CSS。它只是一个基本的 HTML 内容。我知道我可以使用 stringByEvaluatingJavaScriptFromString 加载 JavaScript .但是,在我获取 HTML 内容时,是否可以通过某种方式获取页面上的所有 JavaScript 和 CSS,以便我以后可以使用它?
我也尝试过使用 document.body.parentNode.innerHTML
和 document.documentElement.outerHTML
,但仍然显示基本的 HTML。这样做的原因是,图像、CSS 和 JavaScript 有一个服务器路径。我又问了一个question但它不适用于我的 HTTPS 请求。
这也行不通:
NSError *error = nil;
NSString *activitiesContent = [NSString stringWithContentsOfURL:[NSURL URLWithString:TGURL_ACTIVITIES] encoding:NSUTF8StringEncoding error:&error];
我试过了 this大多数地方都提到的解决方案。但这给了我一个空白页。我什至试图将内容保存在文件中。当我访问文件中页面的源码时,发现CSS和JavaScript的路径是相对的:
<link href="/Content/Sass/style_sass.css?version=1.0.1.09" rel="stylesheet" /> <!-- call style_sass.css file -->
<link href="/Content/Sass/topbar.css?version=1.0.1.09" rel="stylesheet" />
如果我尝试 creating resource folder ,这个文件夹的大小会很大。另外还会有维护问题。每次服务器 CSS/JavaScript 发生变化时,我都必须更新 CSS/JavaScript。
这是我得到的:
页面应该是这样的:
终于是我想要的了:
最好的解决方法是什么,或者是否有其他方法可以在应用程序进一步启动时显示整个页面(包括 CSS、JavaScript、图像)?
最佳答案
您可以发出直接请求并下载完整数据,而不是最初使用 UIWebView 加载内容。下载数据后,您可以使用下载的内容加载 UIWebView。使用 document.body.outerHTML
时,您实际上只会获取 body 标签。
关于ios - UIWebView - 为下次启动存储内容时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28470324/