我發現這個問題,而試圖尋找自己解決這個問題,並希望分享我在那裏結束了,以防萬一它可能被證明爲他人有所幫助。
它的缺點是,當我向localStorage添加一個值時,我把它的鍵放在一個數組中。然後,在向localStorage寫入其他內容之前,我通過鍵循環並獲得其長度的總和,以確保我沒有超出我熟悉的閾值。
如果localStorage的是大於2MB(在這種情況下),則它會從localStorage的第一項,刪除該數組該條目,然後寫入新條目。
// check the size of localStorage
var localStorageArray = [];
var localStorageSize = 0;
for (var i=0; i < localStorageArray.length; i++) {
localStorageSize += localStorage.getItem(localStorageArray[i]).length;
}
// save to localStorage if it has not been saved already
if (!localStorage.getItem(key)){
if (localStorageSize < 2000000) {
localStorage.setItem(key, value);
localStorageArray.push(key);
} else {
localStorage.removeItem(localStorageArray[0]);
localStorageArray.shift();
localStorage.setItem(key, value);
localStorageArray.push(key);
}
}
因爲這是串化'data.length'應該至少給你的字符數。 – Christoph 2012-07-23 13:51:25
@Christoph:是的,正如我在我的問題中已經提到的那樣。你是否建議把它乘以每個字符假設的字節權重? – 2012-07-23 14:59:02