【问题标题】:localStorage resets after close browser关闭浏览器后本地存储重置
【发布时间】:2019-01-01 02:00:28
【问题描述】:

我开发了一个本地 HTML5/JavaScript 网络应用程序,我正在尝试将数据存储在 localStorage 中。

如果我在不关闭浏览器的情况下关闭 webapp tab 没有问题:当我在新标签页中重新打开 webapp 时,我可以在 localStorage 中找到我的数据。

我在开发者工具 (F12) -> 应用程序中看到 localStorage 对象存在并且我的数据在那里。

如果我关闭浏览器,当我重新打开 web 应用程序(也重新启动浏览器)时,我会丢失所有内容。

然而,我在 Developer Tools (F12) -> Application 中看到 localStorage 对象存在,但它是无效的。

我没有使用localStorage.clear() 指令,也没有删除我的 js 代码中的任何项目。

浏览器:我使用的是 Google Chrome 版本 67.0.3396.99(官方版本)(64 位)(不在隐身模式下)。

有什么想法吗?

【问题讨论】:

  • 您的浏览器/计算机上可能有安全设置来自动清除此类内容。我会尝试不同的浏览器/计算机,和/或玩弄隐私设置。
  • localStorage 在用户在设置下满足这些条件时被清除:Chrome:设置 > 隐私和安全 > 清除浏览数据 • 时间范围“所有时间” • 选择“cookies 和其他站点数据” ”
  • @Carcigenicate 我尝试了 Firefox,但没有任何变化。我开始认为这是计算机配置(也许是策略?我不知道)。
  • @Miaan 我已将 Chrome 设置更改为“过去 4 周”的时间范围,并从“cookie 和其他站点数据”中删除了检查。没有变化。
  • 介意显示您在本地存储中的保存和检索吗?

标签: javascript html google-chrome web-applications local-storage


【解决方案1】:

我没有太多使用本地存储,但这对我有用。

set_data(); 函数将数据设置在本地存储中。当你想保存当前页面数据时,你会触发它。

然后当浏览器关闭并重新打开页面时,localStorage.getItem 会找到所有存储的数据。

var data = localStorage.getItem('my_data');

// for testing
alert(data);

set_data = function() {

  data = localStorage.setItem('my_data', 'whatever');

  // for testing
  alert(localStorage.getItem('my_data'));

}

delete_data = function() {

  data = localStorage.clear();

  // for testing
  alert(localStorage.getItem('my_data'));

}

查看工作中的 jsfiddle https://jsfiddle.net/joshmoto/j2y8o6rq/

【讨论】:

  • 谢谢@joshmoto。在我的 web 应用程序中,我使用一个函数将数据保存在 localStorage:function SaveState() { localStorage.setItem("my_data", "value"); } 和另一个函数来检索存储的数据:function ResumeState() { localStorage.getItem("my_data"); } 但它对我不起作用:ResumeState() 函数在浏览器后无法在 localStorage 中找到数据重启。
  • 当您关闭并重新打开它时,我的小提琴是否将数据保存在您的浏览器中?
  • 您是否尝试过将 localStorage 函数传递给变量?我知道这可能不重要。
  • 不幸的是,您的小提琴没有在我的浏览器中保存数据。我点击保存,我看到了警报(whatever),但是如果我关闭并重新启动浏览器,localStorage 中什么都没有
  • 您尝试过将 localStorage 函数传递给变量吗? 是的,在 ResumeState() 函数中我使用了变量:variable = localStorage.getItem("my_data");,但不是在 SaveState() 函数中,我应该这样做吗?
【解决方案2】:

已解决

在我的 JS 代码中,我使用 window.onbeforeunload = function() {...} 指令来防止浏览器在不保存数据的情况下关闭。我已删除此说明。

此外,我已从 Internet 选项中取消选择“退出时删除浏览历史记录”标志。

现在,即使在关闭浏览器并重新启动我的 web 应用程序(也重新启动浏览器)之后,我也可以从 localStorage 恢复我的数据。

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,我也在开发我的个人网络应用程序,我用这段代码修复了它,希望对你有帮助。

    let oldStorage = localStorage.getItem('myStorage') || '';
    let newStorage = [...oldStorage];
    console.log(newStorage);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-20
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      相关资源
      最近更新 更多