2016-10-24 11 views
1

ウィンドウが閉じる前にコードを実行したいが、プロンプトを表示したくない。ここ は私のコードです:私のコードが実行取得されていないとして、未定義またはfalseを返すAngularjsプロンプトが表示されない状態で正しく実行されない

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

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

が機能していません。 助けていただければ幸いです。

答えて

0

あなたのコードは意図したとおりに動作します。一度でアンロードので、あなたがbeforeunloadメソッドで何ができるかの制限があり、

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. 
     }); 
} 

をしかし:あなたが持っているのと同じ

https://jsfiddle.net/8ubz4bxg/

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

とコントローラ:以下フィドルをチェックあなたが何かをする時間は非常に限られています。あなたが持っているどのくらいの時間をテストするには、以下の変更を使用することができます:あなたは0-100のようなものにタイムアウトを減少させた場合、今

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

を、あなたはまだ彼を出力INT「ヘクタール-HA」を見ることができます。それを2秒(2000)に増やしてください。ほとんどの場合、その行は表示されません。

関連する問題