一尘不染

如何使用角度检测浏览器的后退按钮单击事件?

javascript

是否可以使用浏览器中的“历史记录后退”按钮检测到用户进入了页面?最好是我想使用angular.js检测到此动作。

我不想使用角度布线。如果用户提交表单,并且在成功提交到服务器并进行重定向之后,它也应该起作用,如果用户使用浏览器的“后退”按钮返回到表单,则也应该是可行的。


阅读 234

收藏
2020-05-01

共1个答案

一尘不染

这是Angular的解决方案。

myApp.run(function($rootScope, $route, $location){
   //Bind the `$locationChangeSuccess` event on the rootScope, so that we dont need to 
   //bind in induvidual controllers.

   $rootScope.$on('$locationChangeSuccess', function() {
        $rootScope.actualLocation = $location.path();
    });

   $rootScope.$watch(function () {return $location.path()}, function (newLocation, oldLocation) {
        if($rootScope.actualLocation === newLocation) {
            alert('Why did you use history back?');
        }
    });
});

我正在使用运行块来启动它。首先,我将实际位置存储在$ rootScope.actualLocation中,然后侦听$
locationChangeSuccess,并在发生这种情况时使用新值更新ActualLocation。

在$ rootScope中,我监视位置路径中的更改,以及新位置是否与previousLocation相等,这是因为未触发$
locationChangeSuccess,这意味着用户已使用了历史记录。

2020-05-01