用javascript在浏览器/android中的后退按钮上触发事件



我的angular应用程序的内容创建流程正被机器人和浏览器的物理按钮打破,这些按钮将用户带到他们的来源,而不是过程中的前一步。我试着用locationChangeStart和其他一些类似的事件来修复它,但它们都是由我的"继续"按钮和物理"返回"按钮触发的。

有没有办法只在用户按下浏览器/android的后退按钮时触发事件,或者知道locationChangeStart是否是由后退按钮和应用程序的按钮触发的?如果可能的话,我希望避免添加jQuery,因为我们目前没有使用它。

我放弃了检测用户按下后退按钮并对其进行操作的尝试。相反,将其作为默认操作,并更改按钮的行为方式。我检测用户何时按下我们的一个按钮,并根据它设置一个变量

    var navigating = false;
    $scope.$on('$locationChangeStart', function(event) {
        if($scope.global.application="new-ad" && !navigating){
            event.preventDefault();
            $scope.areYouSure = true;
        }
    });
    $scope.nextStep = function() {
        navigating = true;
        $location.url('/step-two');
    }

基本上,我们首先将变量设置为false,如果用户按下physical back,它将显示提示,提醒用户他们将失去工作。然而,如果用户使用我们的"继续"按钮,同时触发locationChange,它会将变量设置为true,让应用程序知道从应用程序中触发了什么locationChange,并允许它继续。