history.back() 在 iOS 上的 Safari 中不起作用

Posted

技术标签:

【中文标题】history.back() 在 iOS 上的 Safari 中不起作用【英文标题】:history.back() doesn't work in Safari on iOS 【发布时间】:2014-01-14 14:12:28 【问题描述】:

我的应用基于 AngularJS 1.2.3。该应用程序作为 ios 的 Web 应用程序启用。该应用程序包含带有 onclick 处理程序的后退按钮,代码如下

history.length && history.back()

我也尝试过使用history.go(-1)。问题是,浏览器不会在 iOS 上的 Safari 中导航回历史记录,或者当应用程序作为 Web 应用程序保存到主屏幕时。然而,我觉得奇怪的一件事是它在 Safari 上的 Chrome 中运行良好,因为 Chrome 实际上是 Safari 浏览器引擎。

我知道它以前有效,但由于某种原因不再有效。 iPad 运行 iOS 7.0.4。

【问题讨论】:

【参考方案1】:

如果您使用 AppCache,history.back 将无法在 iOS7 上运行(请查看http://www.sencha.com/blog/the-html5-scorecard-the-good-the-bad-and-the-ugly-in-ios7/)。

因此,如果这是问题所在,最简单的解决方案是禁用 AppCache。

【讨论】:

这个 iOS7 Safari 错误似乎已在 iOS 7.1.2 中得到修复,目前正在推出。它刚刚在我的 iPad 和 iPhone 上可用,它解决了我的离线缓存应用程序的后退导航问题。 我有 7.1.2,但错误仍然存​​在。我真的希望 iOS 8.

以上是关于history.back() 在 iOS 上的 Safari 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

Angular:使用 $window.history.back() 在 iOS 上并不总是有效

js 页面history.back()返回上一页,ios 不重新加载ready的解决办法

[转]history.back(-1)和history.go(-1)的区别

IE 11(Edge)中输入(文本/隐藏)的值第二次为空,“返回”或history.back()

在 UIWebView 中使用 history.back() 但加载的前页包含非常旧的数据

history.go()和history.back()的区别是什么