嵌入式 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/