Chrome 设置'dataURL'的值超出了配额

lstz6jyr  于 2023-08-01  发布在  Go
关注(0)|答案(6)|浏览(175)

我有一个JavaScript代码保存字符串到本地存储,字符串大小为400000,

var dataURL = canvas.toDataURL("image/jpg").toString();
localStorage.setItem("dataURL", dataURL);

字符串
我打开的html文件从 chrome ,在一台电脑它的确定在另一台电脑我得到
未捕获的QuotaExceedError:无法在“Storage”上执行“setItem”:设置“dataURL”的值超出了配额。
在这台计算机中,我允许保存字符串长度不超过100000个字符。两台电脑都有相同的Chrome版本35.0.1916.114 m为什么?

iq0todco

iq0todco1#

当您的浏览器达到最大限制时,它会抛出此错误Failed to execute 'setItem' on 'Storage':设置“”的值超出了配额。

  • 你可以这样处理
try {
     var count = 100;
     var message = "LocalStorageIsNOTFull";
     for (var i = 0; i <= count; count + 250) {
         message += message;
         localStorage.setItem("stringData", message);
         console.log(localStorage);
         console.log(count);
     }

 }
 catch (e) {
     console.log("Local Storage is full, Please empty data");
     // fires When localstorage gets full
     // you can handle error here or empty the local storage
 }

字符串

hgc7kmma

hgc7kmma2#

由于以下原因也可能发生此类错误:
在单个localStorage键中存储值是有限制的。

例如,如果我写localStorage.setItem('data',allData);则有一个限制设置为**'data'key,它可以在'allData'**value中存储指定数量的字符。

在chrome和firefox中,您可以在一个密钥中存储多达5200000个字符。您可以通过访问此网站https://arty.name/localstorage.html检查浏览器限制
因此,要解决此问题,您必须检查您试图存储在单个密钥中的字符数。
如果您超过了localStorage键的值大小,则必须将大小减小到适当的限制。

wlsrxk51

wlsrxk513#

localStorage.clear();清除本地存储对我来说很有效。
如果您使用Firefox,则可能需要使用window.localStorage.clear();

eqfvzcg8

eqfvzcg84#

chrome的本地存储默认是25 M,所以清除你的chrome的本地存储就可以了。祝你好运!

pxyaymoc

pxyaymoc5#

这取决于浏览器首选项和磁盘空间。比较你的两台电脑的浏览器在这里https://arty.name/localstorage.html,并检查他们是否存储相同的号码。的角色。你会看到不同之处。

rlcwz9us

rlcwz9us6#

下面的代码将允许您保存在本地存储器中的最多数据量,而不会在存储超过时清除它。

const setInLocalStorage = (keyName, value) => {
  try {
      localStorage.setItem(keyName, JSON.stringify(value));
  } catch (error) {
      console.log('Error in local storage', error);
      setInLocalStorage(keyName, JSON.parse(localStorage.getItem(keyName)));
  }
};

字符串

相关问题