pappu_kutty
pappu_kutty

Reputation: 2488

jquery window.onbeforeunload not working with a href=javascript function

i have below code to invalidate session on window unload

window.onbeforeunload = function(event) {
    if (typeof event == 'undefined') {
        event = window.event;
    }
    if (event) {
        console.log("closing the browser, invalidating the session");
        $.ajax({
            url : "/inValidateOnBrowserClose.html",
            type : "get",
            cache : false,
        }).done(function(data) {
            console.log(" invalidated session on browser close event");
        });

    }
    return true;
};

$(function() {
    $("a").click(function() {
        window.onbeforeunload = null;
    });
    $("button").click(function() {
        window.onbeforeunload = null;
    });

});

all working fine, but i have a page where i have a dynamically created buttons.

<span class="myButton"><a href="javascript:submitForm" >Update </a></span>

when i click above anchor (button) my window unload event is getting called (in my case it should not get called), i am surprised why $("a").click(function()) is not called in first place, i am trying to fix this but no luck. Thanks for your answers

Upvotes: 0

Views: 1167

Answers (1)

Bhushan Kawadkar
Bhushan Kawadkar

Reputation: 28523

You need to use delegate here like below for binding click events to dynamically generated elements :

$(function() {
    $(document).delegate("a","click",function() {
        window.onbeforeunload = null;
    });
    $(document).delegate("button","click",function() {
        window.onbeforeunload = null;
    });

});

And this works for already existing elements, so no need to write separate click binding.

For firefox user delegate function may not work so they can use on. please see below code

$(function() {
        $("a").on("click",function() {
            window.onbeforeunload = null;
        });
        $("button").on("click",function() {
            window.onbeforeunload = null;
        });

    });

Stackoverflow Issue

Upvotes: 2

Related Questions