2009-04-23 29 views

答えて

13

ウィンドウの終了を直接通知することはできませんが、window.open()によって返されたウィンドウオブジェクト参照のclosedプロパティを調べることによって、子ウィンドウが閉じられているときに作業することができます。

ここでは、ポーリングによってclosedプロパティを閉じている子ウィンドウの5秒以内にアラートが表示されます例です:ポップアップ内のコード 1/2の部分と

var win = open('http://www.google.com'); 
var intervalId = setInterval(function() { 
     if (win.closed) { 
      clearInterval(intervalId); 
      alert('Window closed! Hoorah!'); 
     } 
    }, 5000); 
+0

あなたは直接通知されるカント子ウィンドウが別のドメインにあるため、正しいですか? – Adam

+0

これは、ウィンドウが閉じられたときに動き出すのに適したブラウザイベントがないためです。 –

+0

すごく優しい男..魅力のように働いた。ありがとうございます – BKM

-1

よりよい解決策:

親で
$(window).bind('unload', 
    function(){ 
    window.opener.PopupUnload(window) 
    }) 

2 /(メインウィンドウ):

function PopupUnload(wnd){ 
setTimeout(function(){ // setTimeout is for IE 
    if(wnd.closed) 
    alert('You just killed me...') 
    },10) 
} 
このコードは、()のsetInterval(で)永久に呼び出されていない機能を備えた

、あなたは近いとリフレッシュポップアップの違いを作る(ポスト/取得)

(IE8とFF3でテスト)

+1

あなたの 'window.opener.PopupUnload'呼び出しは、親ウィンドウとポップアップウィンドウが異なるドメイン間のクロスサイトスクリプティングの制限が原因です。 –

関連する問題