我正在制作一款移动应用,它在应用的导航栏中有一个后退按钮。该按钮用于在应用程序中向上导航一级。并非所有级别的应用程序都写在url中,其中一些被跳过,因此我不能依赖浏览器后退按钮,因为并非所有内容都写在历史记录中。所以我想要做的是防止你单击后退按钮时发生的默认事件(甚至网址更改,因为我有一个功能,当你点击应用程序的某些部分时手动重写网址),我想要浏览器的后退按钮绑定到我的自定义功能。 我想在历史中用history.pushstate添加一个虚假的状态,所以当我按下时我会进入虚假状态,但不幸的是你不能有两个同名的状态。 你们知道任何解决方案吗? 感谢
答案 0 :(得分:5)
我们希望防止用户在注销或令牌无效时使用后退按钮。
// Prevent to use the back button.
$scope.$on('$locationChangeStart', function(event) {
if (!$scope.isAuthenticated) {
event.preventDefault();
}
});
if if是否可以实现你的url重写功能。 希望这有帮助
答案 1 :(得分:2)
试试这个:
$rootScope.$on("$routeChangeStart", function(event, next, current) {
if(current && current.params === "example") {
$location.path("/defaultPage");
}
});
答案 2 :(得分:0)
以下代码可以解决这个问题:
var allowNav = false;
var checkNav = false;
$rootScope.$on('$stateChangeSuccess', function (event, toState, toStateParams, fromState, fromStateParams) {
allowNav = checkNav;
checkNav = true;
});
$rootScope.$on('$locationChangeStart', function (event, next, current) {
// Prevent the browser default action (Going back)
if (checkNav) {
if (!allowNav) {
event.preventDefault();
}
else {
allowNav = false;
}
}
});