打开一个新选项卡丢失了本地存储javascript堆栈溢出中的arraylist

时间:2015-07-02 06:21:06

标签: javascript angularjs local-storage web-storage

我的应用程序工作尝试将一些数据存储在我的本地存储上,当我没有打开任何新的选项卡或窗口时工作正常,但是当我打开一个新选项卡时,我的数组丢失了以前存储的所有数据,只存储了当前存储的数据数据。请在这里建议我做错了什么。

我的代码是这样的:

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));           
}

3 个答案:

答案 0 :(得分:0)

帖子有点令人困惑,但我打赌你有线

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));
}

答案 1 :(得分:0)

不应该这样,因为存储在localStorage对象中的数据也将在选项卡之间共享。

您可能有一些其他代码会在您打开新标签页时重置或删除localStorage中的数据。

答案 2 :(得分:0)

根据: This

您无法使用sessionStorage在多个标签页之间共享数据,因为新页面是新会话。

您需要替换

.active {
    background-color: #f43333;
}

通过

setStorageType('sessionStorage')