I am having strange problem with jQuery (1.6.x). I have this simple call on my page:
window.onbeforeunload = function() { return 'Are you sure ?'; };
But it doesn't work, because as I've found out, jQuery overwrites content of the window.onbeforeunload
. In JS console, I can see that window.onbeforeunload
contains piece of jQuery code:
function( e ) {
// Discard the second event of a jQuery.event.trigger() and
// when an event is called after a page has unloaded
return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
jQuery.event.handle.apply( eventHandle.elem, arguments ) : undefined;
};
Is there a way I can find why and where jQuery overwrites my onbeforeunload
function? When I try to run empty jsfiddle with just jQuery loaded and with my onbeforeunload
function, it works as expected.
Any hints will be appreciated.
EDIT:
Just in case, somebody suggests using:
$(window).bind('beforeunload', function() { return 'Are you sure';} );
I've already tried it and it behaves the same way as using pure Javascript.
Ok, I've finally figured a solution, which is probably not the cleanest one - because I don't know the exact cause of the problem - but it works. I've put my beforeunload function into jQuery's load function so it is executed after DOM and other elements are loaded.
$(window).load(function () {
$(window).bind('beforeunload', function() { return 'Are you sure ?';} );
});
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With