有没有办法阻止整个angularjs Web应用程序中的退格导航?

时间:2016-06-09 08:26:54

标签: javascript angularjs

我需要在我的整个应用程序中限制退格键导航。是否有任何解决方案,即我可以在一个地方为我的整个应用程序做些什么?

3 个答案:

答案 0 :(得分:1)

angular.module('yourModule', [])
  .controller('yourController', ['$scope', '$document', function($scope, $document) {
      $document.on('keydown', function(e){
          if(e.which === 8 && ( e.target.nodeName !== "INPUT" && e.target.nodeName !== "SELECT" ) ){ // you can add others here inside brackets.
              e.preventDefault();
          }
      });

    }
  ]);

除非有任何输入标记处于活动状态,否则会阻止退格导航。

我们还没有为textarea处理它,所以它不允许在textarea上退格。

以下是演示http://plnkr.co/edit/ZXtiJNI0a73c0SwIQ7mI?p=preview

答案 1 :(得分:1)

这是正确的方法:

preventNavigate.$inject = ['$window'];
function preventNavigate($window) {
    return {
        restrict: 'A',
        link: function() {
            $window.onbeforeunload = function() { 
               return "Are you sure you want to leave?"; 
            }
        }
    }
}

app.directive('preventNavigate', preventNavigate);

然后在您的ng-app包含属性prevent-navigate;

后的index.html上
<body ng-app="app" prevent-navigate> 

答案 2 :(得分:0)

您可以创建像this这样的按键事件指令,如果按下按键是退格键,您可以在事件回调中e.preventDefault();