私のアプリケーションはいくつかのデータを保存しようとしています私のローカルストレージは、新しいタブやウィンドウを開いていないときはうまく動作しますが、新しいタブを開いたときには、以前の保存データがすべて失われ、現在のデータのみが保存されます。私がここで間違っていることを提案してください。
私のコードはこのようなものです:
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));
}
回答:
回答№1は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));
}
回答№2の場合は0
localStorageオブジェクトに格納されているデータはタブ間でも共有されるので、そうなるべきではありません。
新しいタブを開くとすぐにlocalStorageからデータをリセットまたは削除する他のコードがあるかもしれません。
回答№3の場合は0
による: この
新しいページは新しいセッションであるため、sessionStorageを使用して複数のタブ間でデータを共有することはできません。
あなたは交換する必要があります
setStorageType("sessionStorage")
〜によって
setStorageType("localStorage") // which is default