打开一个新的选项卡会丢失本地存储中的arraylist javascript堆栈溢出
opening a new tab loses the arraylist in local storage javascript stack overflow
我的应用程序工作尝试将一些数据存储在本地存储中,当我不打开任何新选项卡或窗口时,本地存储可以正常工作,但当我打开新选项卡时,我的数组会丢失所有以前存储的数据,只存储当前数据。请说明我在这里做错了什么。
我的代码是这样的:
getCurrReqIdList = [];
localStorage.setItem('getCurrReqIdList', JSON.stringify(getCurrReqIdList));
var retrievedData = localStorage.getItem('getCurrReqIdList');
var getFinalReqIdList = JSON.parse(retrievedData);
if(getFinalReqIdList.length > maxCurrentConnectionLength) {
console.log('Hello');
getFinalReqIdList.shift();
getCurrReqIdList.shift();
localStorage.setItem('getCurrReqIdList',JSON.stringify(getFinalReqIdList));
}
这篇文章有点令人困惑,但我敢打赌你有
getCurrReqIdList = [];
localStorage.setItem('getCurrReqIdList', JSON.stringify(getCurrReqIdList));
每次加载页面时运行,用于初始化存储。因此,当您打开一个新选项卡时,它会加载页面并用一个空数组覆盖本地存储值。
你的页面应该运行这样的东西:
getCurrReqIdList = localStorage.getItem('getCurrReqIdList');
if(getCurrReqIdList) {
getCurrReqIdList = JSON.parse(getCurrReqIdList);
} else {
getCurrReqIdList = [];
localStorage.setItem('getCurrReqIdList', JSON.stringify(getCurrReqIdList));
}
这不应该发生,因为存储在localStorage对象中的数据也将在选项卡之间共享。
您可能有一些其他代码,一旦打开新选项卡,就会重置或删除本地存储中的数据。
根据:此
您不能使用sessionStorage在多个选项卡之间共享数据,因为新页面就是新会话。
您需要更换
setStorageType('sessionStorage')
通过
setStorageType('localStorage') // which is default
相关文章:
- 如何检测是否有溢出
- 将作用域存储在JSON中
- 使用javascript存储变量的最安全方式
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 如何有效地将游戏数据存储在URL查询字符串中
- Ember.js-接口状态应该存储在哪里
- 如何解雇“;铁局部存储负载”;事件
- 本地存储中的字符串到字节数组转换
- 如何通过溢出来判断元素被切断了多少像素:隐藏在父级上
- 从jQuery调用存储在Variable中的函数
- 推荐在JavaScript中执行存储为字符串的函数,而不是使用eval
- 通过另一个php应用程序将我的项目推送到Github存储库中
- 将数据存储在javascript数组中以供进一步使用
- 在页面卸载时写入HTML5 FileSystem API存储
- 加载存储在IndexedDB中的HTML页面
- 在字符串中查找所有图像 src URL 并存储在数组中
- 如何从C#代码背后调用本地存储的javascript函数
- 存储为int的IP地址会导致溢出
- 打开一个新的选项卡会丢失本地存储中的arraylist javascript堆栈溢出