Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I block the window.on('beforeUnload') event for <a> tag?

In my project I need to get the user confirmation alert , when the user want to close the window/tab using X button.

But the window.on('beforeUnload') also works for hyper link . How can I block this leave page alert for <a> tag ?

My JSP will have the

<a href="next.jsp" id="navigate"> click here </a>

My Jquery will have ,

$(document).ready(function(){
    $('#navigate').on('click', function() {
    stopNavigate(event);
    });
    
});

function stopNavigate(event){   
    $(window).off('beforeunload', function(){
        
    });
}


$(window).on('beforeunload', function(){
    return 'Are you sure you want to leave?';
});

$(window).on('unload', function(){
    logout();


});

I don't want the leave message alert when the user click any links. I need the leave message alert only for window close operation.

like image 276
Human Being Avatar asked Sep 16 '13 09:09

Human Being


People also ask

What is Beforeunload event in Javascript?

The beforeunload event is fired when the window, the document and its resources are about to be unloaded. The document is still visible and the event is still cancelable at this point. This event enables a web page to trigger a confirmation dialog asking the user if they really want to leave the page.

How do you call a window Onbeforeunload?

The short answer is you can't do this. The onbeforeunload event can only be used to trigger that popup, it can't be used for anything else. Your only options for something like this are to attach an event to every outbound link on your page.


1 Answers

$(document).ready(function () {
    $('#navigate').on('mouseenter', stopNavigate)
        .on('mouseout', function () {
        $(window).on('beforeunload', windowBeforeUnload);
    });

});

function stopNavigate(event) {
    $(window).off('beforeunload');
}

function windowBeforeUnload() {
    return 'Are you sure you want to leave?';
}

$(window).on('beforeunload', windowBeforeUnload);

DEMO

like image 121
A. Wolff Avatar answered Sep 21 '22 17:09

A. Wolff