【问题标题】:Is it possible to delete localstorage item on window close?是否可以在关闭窗口时删除本地存储项?
【发布时间】:2019-01-23 11:37:02
【问题描述】:

我将首次用户登陆时的 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));
        }                           
    }
});

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

【问题讨论】:

  • 如果您不希望项目持久化,为什么不使用 SessionStorage 而不是 localStorage?
  • 你能给出同样的答案吗,如何实现@AakashThakur
  • LocalStorage 的真正目的是在页面重新加载时保持数据。如果您不希望这些数据持久化,为什么首先使用 LocalStorage?
  • @JeremyThille 是的,我首先做错了。会话存储是正确的。

标签: javascript jquery session-cookies


【解决方案1】:

如果不希望item持久化,可以将数据保存在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));
        }                           
    }
});

【讨论】:

  • 谢谢,是sessionStorage,不是SessionStorage。
【解决方案2】:

使用window.onbeforeunload 处理程序。

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

【讨论】:

  • 如果用户将使用移动检查以确保其支持,请谨慎使用该 API developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/…
  • @Nico,有什么问题,不需要退出确认?
  • @vp_arth 当我重定向到另一个页面时,它正在从本地存储中删除。这无济于事
  • 那我根本没看懂这个问题。重定向与关闭有何不同?
  • 只需将所有localStorage 替换为sessionStorage 他们的接口是相等的
猜你喜欢
  • 1970-01-01
  • 2014-08-17
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 2021-12-07
相关资源
最近更新 更多