Angularjs Onbeforeunload没有提示不能正常工作

时间:2016-10-24 08:40:15

标签: javascript angularjs onbeforeunload

我想在窗口关闭之前执行一些代码,但我不想显示提示。 这是我的代码:

  $window.onbeforeunload = function(){
        $rootScope.$broadcast('war-change');
        return undefined;
    };

    $scope.$on('war-change',function(){
        console.log('here');
         //Execute some more code here.
        });

返回undefined或false不起作用,因为我的代码没有被执行。 任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

您的代码确实按预期工作。检查以下小提琴:

https://jsfiddle.net/8ubz4bxg/

<div ng-app>
  <h2>Test unload</h2>
  <div ng-controller="unloadCtrl">
  </div>
</div>

和你一样的控制器:

function unloadCtrl($scope,$window,$rootScope) {
   $window.onbeforeunload = function(){
        $rootScope.$broadcast('war-change');
        return undefined;
    };

    $scope.$on('war-change',function(){
        console.log('here');
         //Execute some more code here.
        });
}

但是,使用beforeunload方法可以做些什么是有限制的,因为一旦提交了unload,你的时间就会非常有限。要测试您有多少时间,您可以使用以下修改:

$scope.$on('war-change',function(){
    console.log('here');
     //Execute some more code here.
     setTimeout(function(){ console.log("ha-ha")}, 100)
     console.log("he-he")
    });

现在,如果你将超时减少到0-100之类,你仍然可以看到输出中的“ha-ha”。将它增加到2秒(2000)并且很可能你不会看到那条线。