是否可以在窗口关闭时删除本地存储项目?



我将首次用户登陆时的UTM参数存储在网站中。他/她可以访问网站的任何页面,在注册期间,我将这些参数发送到后端(存储到数据库(。

$(document).ready(function() {
if(window.location.href.match('utm_*')) {
var utmData =  {
utm_source: getParameterByName('utm_source'),
utm_medium: getParameterByName('utm_medium'),
utm_campaign: getParameterByName('utm_campaign'),
gclid: getParameterByName('gclid')
}
if(!localStorage.getItem('utmData')) {
localStorage.setItem('utmData', JSON.stringify(utmData));
}else if(localStorage.getItem('utmData')){
localStorage.removeItem('utmData');
localStorage.setItem('utmData', JSON.stringify(utmData));
}                           
}
});

但问题是当用户不注册但这些参数仍然存在时。我想在他/她关闭浏览器时删除。

使用 window.onbeforeunload handler。

window.onbeforeunload = function(e) {
localStorage.removeItem('utmData');
// return nothing for no «quit confirmation»
};

如果您不希望项目持久化,可以将数据保存在SessionStorage中:

$(document).ready(function() {
if(window.location.href.match('utm_*')) {
var utmData =  {
utm_source: getParameterByName('utm_source'),
utm_medium: getParameterByName('utm_medium'),
utm_campaign: getParameterByName('utm_campaign'),
gclid: getParameterByName('gclid')
}
if(!sessionStorage.getItem('utmData')) {
sessionStorage.setItem('utmData', JSON.stringify(utmData));
}else if(SessionStorage.getItem('utmData')){
sessionStorage.removeItem('utmData');
sessionStorage.setItem('utmData', JSON.stringify(utmData));
}                           
}
});