[英]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.