我想禁用我的应用程序的后退按钮(我知道这是愚蠢的,糟糕的用户体验,对世界,甚至犯罪!)但我的客户希望其后退按钮禁用:)。无论如何,我做了以下禁用后退按钮。
我在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.
关于后一种方法的任何解决方案或想法?
请注意,我正在努力解决这个问题超过三天。
$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()将保持相同的页面,让我们试试这个!