Google chrome onbeforeunload wrong behavior with iframe
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'.