Angular:使用 $window.history.back() 在 iOS 上并不总是有效
Posted
技术标签:
【中文标题】Angular:使用 $window.history.back() 在 iOS 上并不总是有效【英文标题】:Angular : using $window.history.back() doesn't always work on iOS 【发布时间】:2017-05-30 13:44:18 【问题描述】:我们有一些 ios 客户端抱怨我们在 AngularJS 应用程序中实现的“返回”按钮并不总是有效。后退按钮只是一个执行$window.history.back()
的图像。我读过使用 window.history.go(-1)
是首选,但这不是 Angular 方式。
有谁知道$window.history.back
在iOS 中有什么问题吗?如果是这样,在AngularJS
中实现这一点的正确方法是什么?
【问题讨论】:
Cordova - window.history.back() not working on html back button in iOS 9的可能重复 我正在使用 angular#1.5.1,遇到相同的 ios 问题,$window.history.go(-1) 在 ios 10.2.1 中不起作用 我们最终从我们的应用程序中删除了 window.history.back() 并以另一种方式解决了它。检查这个问题:***.com/questions/16635381/…。如果发生“stateChangeSuccess”,我们会将“fromState”(= 前一个状态)存储在一个变量中,然后在单击后退按钮时使用 $state.go(vm.fromState) 返回上一页。这对我们非常有效。 【参考方案1】:我们的 web wrapper 应用程序有一个非常相似的问题(webview 指向一个 iframe)。
我们的“后退按钮”是对history.back(1);
的简单调用。
在苹果设备上通过 UIWebView 加载时工作完美。
我们注意到,一旦我们开始导航 2 个或更多跃点进入该站点,该按钮就会起作用。
我发现最简单的方法是在$(document).ready
的末尾设置半秒的页面点击超时。
setTimeout(function()
$(".nav-home-logo").click();
, 5000);
我们已经有一个 .nav-home-logo 的 onclick 事件调用:
$("iframe").attr("src", "https://your.website.here?foo=" + Math.random());
缓存破坏器似乎有帮助。
我相信它与here 描述的问题有关。
【讨论】:
以上是关于Angular:使用 $window.history.back() 在 iOS 上并不总是有效的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 @angular/upgrade 在 Angular 1 应用程序中使用 Angular 2 组件