刷新浏览器时 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
sessionStorage和localStorage的使用