我想在窗口关闭之前执行一些代码,但我不想显示提示。 这是我的代码:
$window.onbeforeunload = function(){
$rootScope.$broadcast('war-change');
return undefined;
};
$scope.$on('war-change',function(){
console.log('here');
//Execute some more code here.
});
返回undefined或false不起作用,因为我的代码没有被执行。 任何帮助表示赞赏。
答案 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)并且很可能你不会看到那条线。