Angular how to remove localStorage when browser close but do not remove on new tabs are closed

1k Views Asked by At

I tried window.onbeforeunload in onDestroy, but both are clearing the data on tab closing as well. I also tried using sessionStorage, but your data are removed as well.

1

There are 1 best solutions below

2
Ammar Aslam On

You can try using a cookie which will store a flag. The cookie will exist only for the session. If the cookie is absent, you clear any currently present data in your localStorage.

// get cookie 
var cookiename = getCookie("data_keep_flag");
if (cookiename == null) {
    localStorage.removeItem("session_only_data");
}

// Make new session-only cookie flag
document.cookie = "data_keep_flag=keep; expires=0; path=/";

//function getCookie        
function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);
    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else
    {
        begin += 2;
        var end = document.cookie.indexOf(";", begin);
        if (end == -1) {
        end = dc.length;
        }
    }
    // because unescape has been deprecated, replaced with decodeURI
    //return unescape(dc.substring(begin + prefix.length, end));
    return decodeURI(dc.substring(begin + prefix.length, end));
}
localStorage.setItem("session_only_data", "new_data");