iphone - 使用带有 loadHTMLString/loadData 的 UIWebView 会破坏后退和前进按钮,解决方法吗?

标签 iphone caching uiwebview

嵌入式 UIWebView 存在一个已知问题,即如果使用 loadHTMLString 或 loadData 将数据加载到其中,则 canGoBack/canGoForward 属性和 goBack/goForward 方法将不起作用。这些仅在使用 loadRequest 时有效。

由于 Safari 的普通应用程序缓存在嵌入式 UIWebView 中不起作用,因此创建有效缓存其他实时内容的 native 应用程序变得不可能/无法使用。也就是说,我可以缓存 HTML、Javascript、图像等内容,并通过 loadHTMLString 或 loadData 加载它们,但后退和前进按钮不起作用。

我还可以使用 loadRequest 并指定文件 URL,但是在与实时站点通信时,即使我指定了标签(由于 cookie 域问题),这也会中断。

我有一个解决方法,基本上涉及使用本地存储重新实现应用程序缓存(并且不让 native 应用程序本身执行任何缓存),这是可以的,但并不理想。还有其他解决方法/我错过的事情吗?

最佳答案

我正在使用 UIWebView 的 canGoBack 来检查我是否位于历史记录的第一页。如果是的话,我只需调用我用来加载第一页的小方法(displayLocalResource 设置 HTMLString 并将其加载到 webView 中)。这是一个片段:

//Implementing a back button
- (void)backOne:(id)sender{
    if ([webView canGoBack]) {
        // There's a valid webpage to go back to, so go there
        [webView goBack];
    } else {
        // You've reached the end of the line, so reload your own data
            [self displayLocalResource];
        }
    }

关于iphone - 使用带有 loadHTMLString/loadData 的 UIWebView 会破坏后退和前进按钮,解决方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2009740/

相关文章:

iphone - App Store 的本地化价格

iphone - 如何对图像进行圆角处理

javascript - 如何在UIWebView中使用Javascript?

iphone - UICollectionView 报纸状布局

ios 应用程序崩溃,没有日志

ruby-on-rails - 使用 redis-rails,如何删除 session 缓存以外的所有内容?

caching - GroupCache 是否支持像 memcached delete 这样的显式缓存逐出?为什么?

google-chrome - Chrome 和 Safari 不缓存大视频

javascript - UIWebView 性能与 JS onclick 功能

ajax - 了解 AJAX 何时加载到 UIWebView