Let say I have two pages. One of them contains another one inside as iframe. If you subscribe to onbeforeunload event on the parent page, then this event doesn\'t triggers if yo
I know it is an old question but just to help people who are coming here through Search :
The bug is fixed by now here.
Since chrome 10, the issue should be fixed.
There is a related bug though here.
So, in short if you still not able to fire "onbeforeunload
" on frames, it could be due to change in the content through JavaScript like document.open
document.write
document.close
etc.
the below code will work across all the browsers
if (typeof window.addEventListener != 'undefined') {
window.addEventListener('beforeunload', test, false);
}
else if (typeof document.addEventListener != 'undefined') {
document.addEventListener('beforeunload', test, false);
}
else if (typeof window.attachEvent != 'undefined') {
window.attachEvent('onbeforeunload', test);
}
else {
if (typeof window.onbeforeunload == 'function') {
window.onbeforeunload = function() {
test();
};
}
else {
window.onbeforeunload = test;
}
}
function test(){ alert('working');}
try this once ...
You may also try to change the iframe's url to "about:blank", e.g.:
$("#myFrameId")[0].src = "about:blank";
It forces chrome to "cleanly" close the window containted within the iframe.
Just to mention: if you want to close only your iframe but not the parent window, you have to give chrome enough time to execute the handler you've attached to 'onbeforeunload'.