ios - UIWebView - 为下次启动存储内容时出现问题

标签 ios objective-c iphone uiwebview nsurl

我正在保存 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.innerHTMLdocument.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。

这是我得到的:

enter image description here

页面应该是这样的:

enter image description here

终于是我想要的了:

最好的解决方法是什么,或者是否有其他方法可以在应用程序进一步启动时显示整个页面(包括 CSS、JavaScript、图像)?

最佳答案

您可以发出直接请求并下载完整数据,而不是最初使用 UIWebView 加载内容。下载数据后,您可以使用下载的内容加载 UIWebView。使用 document.body.outerHTML 时,您实际上只会获取 body 标签。

关于ios - UIWebView - 为下次启动存储内容时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28470324/

相关文章:

ios - 使用 cocoapods 导入库

ios - Swift -Ounchecked 和断言

ios - UIAlertController - 默认覆盖 ActionSheet?

iphone - 响应式设计的边距在移动设备上不起作用

iphone - RemoteIO 的 AudioSession 设置与 iPod 一起玩

objective-c - Mac OS 命令行程序中的定位服务

objective-c - 如何在iphone sdk中以编程方式获取图像占用的内存大小?

objective-c - 您如何通过名称调用属性 setter ?

iphone - 如何在单点触控中无间隙地循环播放 mp3?

iphone - hideBottomBarWhenPushed 但弹出时