繁体   English   中英

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

[英]Disabling back button in AngularJS with ui-router

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

我在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的状态分别使用/stateA/stateB/stateC URL,并且用户处于状态B,他突然按下返回按钮,将url更改为/stateA并加载了状态A,将url更改为/stateB但未加载状态B且url为/stateB但加载的状态为A。

对后一种方法有什么解决办法或想法吗?

顺带一提,我在这个问题上苦苦挣扎超过三天。

  $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()将保持相同的页面,让我们试试吧!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM