使用ui-router禁用AngularJS中的后退按钮

问题描述 投票:0回答:1

我想禁用我的应用程序的后退按钮(我知道这是愚蠢的,糟糕的用户体验,对世界,甚至犯罪!)但我的客户希望其后退按钮禁用:)。无论如何,我做了以下禁用后退按钮。

我在window.onpopstate事件处理程序中设置了一个标志,如下所示:

window.onpopstate = function() { window.backClicked = true; }

在我的主控制器内部设置如下:

$rootScope.$on('$locationChangeStart', function (event, next, current) {
                if (window.backButton) {
                    event.preventDefault();
                    window.backButton = false;
                }
            });

我想知道这是我的做法不好吗?

我用过这样的其他流行解决方案:

 window.onpopstate = function(event) {
    history.go(1); // or window.forward()
  }; 

但它没有在chrome工作,它没有第一次工作并在州之间流通,并且window.forward()没有重新加载状态,更准确地说:如果我有三个状态名为A,B,C和各自的URL /stateA/stateB/stateC和用户处于状态B,他按下后退按钮突然url更改为/stateA并且状态A加载并且url更改为/stateB但状态B未加载且url是/stateB但加载状态是A.

关于后一种方法的任何解决方案或想法?

请注意,我正在努力解决这个问题超过三天。

javascript angularjs routing angular-ui-router html5-history
1个回答
0
投票

  $rootScope.$on('$locationChangeStart', function (event, next, current) {
                if (window.backButton) {
                    event.preventDefault();
                    window.history.forward();// keep redirecting to the same page
                }
        });

event.preventDefault()你会阻止向后和window.history.forward()将保持相同的页面,让我们试试这个!

© www.soinside.com 2019 - 2024. All rights reserved.