【问题标题】:Angular : using $window.history.back() doesn't always work on iOSAngular:使用 $window.history.back() 在 iOS 上并不总是有效
【发布时间】:2017-05-30 13:44:18
【问题描述】:

我们有一些 iOS 客户端抱怨我们在 AngularJS 应用程序中实现的“返回”按钮并不总是有效。后退按钮只是一个执行$window.history.back() 的图像。我读过使用 window.history.go(-1) 是首选,但这不是 Angular 方式。

有谁知道$window.history.back 在iOS 中有什么问题吗?如果是这样,在AngularJS 中实现这一点的正确方法是什么?

【问题讨论】:

  • 我正在使用 angular#1.5.1,遇到相同的 ios 问题,$window.history.go(-1) 在 ios 10.2.1 中不起作用
  • 我们最终从我们的应用程序中删除了 window.history.back() 并以另一种方式解决了它。检查这个问题:stackoverflow.com/questions/16635381/…。如果发生“stateChangeSuccess”,我们会将“fromState”(= 前一个状态)存储在一个变量中,然后在单击后退按钮时使用 $state.go(vm.fromState) 返回上一页。这对我们非常有效。

标签: javascript ios angularjs


【解决方案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 描述的问题有关。

【讨论】:

    猜你喜欢
    • 2020-04-14
    • 2019-12-21
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 2020-12-21
    • 2010-12-20
    • 2012-12-26
    • 1970-01-01
    相关资源
    最近更新 更多