刷新浏览器时 sessionStorage 消失了 - Javascript

Posted

技术标签:

【中文标题】刷新浏览器时 sessionStorage 消失了 - Javascript【英文标题】:sessionStorage is gone when browser is refreshed - Javascript 【发布时间】:2015-05-05 20:22:09 【问题描述】:

我试图在 sessionStorage 中保留一些数据,但如果我刷新页面或离开链接然后返回,则 sessionStorage 不再存在。

我是 sessionStorage 的新手,如果这是一个明显的解决方法,我很抱歉。

基本上我将一个数组存储到 sessionStorage 中。

  $scope.addPlant = function(plant) 
    for (i = 0; i < $scope.userPlantList.length; i++) 
      if ($scope.userPlantList[i] === plant) 
        alert("You have already added this plant");
        return;
      
    
    $scope.userPlantList.push($scope.currentPlant);
    sessionStorage.setItem("Plants",JSON.stringify($scope.userPlantList));
  ;

然后当我想查看所有存储的内容时

  $scope.retreiveList = function() 
    var retrieved = sessionStorage.getItem("Plants");
    $scope.userPlantList = JSON.parse(retrieved);
  

当我根本不刷新页面/应用程序时,这可以正常工作。

问题:如何让我的 sessionStorage 在刷新/立即重新访问期间持续使用?

【问题讨论】:

@JonathanLonowski 刷新页面不会关闭会话。所以问题出在其他地方 您确定在刷新时,您的脚本不会擦除数据吗? 你的代码是异步的吗? @Austin 转到开发人员工具并确保您的数据已从 sessionStorage 中删除。如果您使用 chrome:F12 -> 资源选项卡 -> 会话存储。 @alsafoo whoooaa 他们确实存在!那么......我在访问声明中做错了什么?他们是在我的范围之外丢失了吗? 【参考方案1】:

我建议使用 angular 的 $window 提供程序

// set
$window.sessionStorage.setItem('Plants', angular.toJson($scope.userPlantList));
// get
$scope.userPlantList = angular.fromJson($window.sessionStorage.getItem('Plants')) || [];

【讨论】:

Angular 没有在上面的问题中被提及,使用window 对象怎么样? angularjs 在标签列表中【参考方案2】:

通过查看开发者工具检查数据是否真的消失了

如果您使用 chrome:F12 -> 资源选项卡 -> 会话存储。

sessionStorage 与浏览器选项卡一起存在。每当您关闭选项卡时,会话存储数据都会被清除。

如果您想要跨标签共享的内容,请查找 localStorage。

【讨论】:

以上是关于刷新浏览器时 sessionStorage 消失了 - Javascript的主要内容,如果未能解决你的问题,请参考以下文章

Vuex刷新时数据会消失,那如何解决?为什么还要使用Vuex

用localStorage来存储数据的一些经验

localStorage和sessionStorage

sessionStorage和localStorage的使用

JS(定时器、 sessionStorage、 localStorage)

16. Vue 登录存储