我发现这个问题,而试图寻找自己解决这个问题,并希望分享我在那里结束了,以防万一它可能被证明为他人有所帮助。
它的缺点是,当我向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