【问题标题】:UIWebView - Issues while storing content for next launchUIWebView - 存储内容以供下次启动时出现问题
【发布时间】:2015-04-12 18:24:20
【问题描述】:

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

这就是我得到的:

页面应该是这样的:

我终于想要了:

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

【问题讨论】:

标签: ios objective-c iphone uiwebview nsurl


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    最好的办法是使用NSURLProtocol 来观察页面的HTTP 请求并将它们也写入磁盘。然后,您可以稍后从磁盘提供文件,而不是通过 HTTP 连接重新加载它们,也可以使用 NSURLProtocol

    Ray Wenderlich 有一个 great tutorial 说明如何使用 NSURLProtocol 来达到这个目的。

    【讨论】:

      猜你喜欢
      • 2010-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 1970-01-01
      • 2016-11-20
      相关资源
      最近更新 更多