Can the parent window be notified when a child window closes? (on a different domain?)
Trying to get around the window.opener not working when on different domains.
Can I at least be notified somehow when the child window closes?
Can the parent window be notified when a child window closes? (on a different domain?)
Trying to get around the window.opener not working when on different domains.
Can I at least be notified somehow when the child window closes?
You can't directly be notified of the window closing, but you can work out when the child window has been closed by inspecting the closed
property on the window object reference returned by window.open()
.
Here's an example that will display an alert within 5 seconds of the child window being closed by polling the closed
property:
var win = open('http://www.google.com');
var intervalId = setInterval(function() {
if (win.closed) {
clearInterval(intervalId);
alert('Window closed! Hoorah!');
}
}, 5000);
A better solution with two pieces of code 1/ in the popup :
$(window).bind('unload',
function(){
window.opener.PopupUnload(window)
})
2/ in the parent (main window) :
function PopupUnload(wnd){
setTimeout(function(){ // setTimeout is for IE
if(wnd.closed)
alert('You just killed me...')
},10)
}
with this code, no function called forever (with setInterval()) and you make the difference between close and refresh popup (post/get)
(tested in IE8 and FF3)