子ウィンドウが閉じたときに親ウィンドウに通知できますか? (異なるドメイン上で)子ウィンドウが閉じたときに親ウィンドウに通知できますか? (diffドメイン上)
異なるドメインにあるときにwindow.openerを回避しようとしました。
子ウィンドウが閉じたときに何とか通知することはできますか?
子ウィンドウが閉じたときに親ウィンドウに通知できますか? (異なるドメイン上で)子ウィンドウが閉じたときに親ウィンドウに通知できますか? (diffドメイン上)
異なるドメインにあるときにwindow.openerを回避しようとしました。
子ウィンドウが閉じたときに何とか通知することはできますか?
ウィンドウの終了を直接通知することはできませんが、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);
よりよい解決策:
親で$(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でテスト)
あなたの 'window.opener.PopupUnload'呼び出しは、親ウィンドウとポップアップウィンドウが異なるドメイン間のクロスサイトスクリプティングの制限が原因です。 –
あなたは直接通知されるカント子ウィンドウが別のドメインにあるため、正しいですか? – Adam
これは、ウィンドウが閉じられたときに動き出すのに適したブラウザイベントがないためです。 –
すごく優しい男..魅力のように働いた。ありがとうございます – BKM