19

この関数を使用して、ウィンドウを閉じるときに呼び出します。

これは、確認ボックスのポップアップ ウィンドウです。

if(confirm("Sure you want to close the window");
{
     // yes return to submit function
}
else
{
  // no return to Other call function
}

window.onclose = function()
{
  alert('yes');
}

X記号で右上隅のウィンドウを閉じると、falseを返す必要があります。このwindow.onclose機能を使用しようとしていますが、ポップアップしません。

誰でも私を助けることができますか?

4

2 に答える 2

48

残念ながら、ポップアップウィンドウにはリッスンできるクローズイベントはありませんが、ウィンドウが閉じられたときに真になるクローズドプロパティがあります。この問題を回避する解決策は、タイマーを開始し、子ウィンドウのクローズド プロパティを毎秒チェックし、ウィンドウが閉じられたときにタイマーをクリアすることです。コードは次のとおりです。

var win = window.open('http://www.google.com','google','width=800,height=600,status=0,toolbar=0');   
var timer = setInterval(function() {   
    if(win.closed) {  
        clearInterval(timer);  
        alert('closed');  
    }  
}, 1000); 
于 2013-04-02T16:43:32.257 に答える
29

現在のブラウザでキャッチできる「閉じる」イベントはありません。

onbeforeunloadはありますが、呼び出されたときに多くのことを行うことはできません。特に、ユーザーの同意なしにウィンドウが閉じるのを防ぐことはできず、閉じられているページから実行しようとするとほとんどの遠隔操作が失敗します。

ポップアップ ウィンドウの場合、終了イベントを取得し、長い操作を実行できますが、オープナー ウィンドウでのみ実行できます。

 var w = window.open('popup.html');
 w.onbeforeunload = function(){
       // set warning message
 };

重要: 最近のバージョンの chrome ではonbeforeunload、警告メッセージのみを設定できます。余分なロジックを実行することはできません。

于 2013-04-02T16:39:35.537 に答える