0

我们从 jquery 调用 jstorage,如下所示:

$.jstorage.set("foo","bar object");

后来我们找这个键“foo”不见了!为什么会这样?我们在 jstorage deleteKey 方法上设置了断点,它没有被调用。

具体来说:

$.jstorage.index()

不包含“foo”。

4

1 回答 1

0

天哪,我找到了答案。让我们看看 jstorage.js 中的 _save 方法,用于持久化 set 调用:

function _save(){
  _dropOldEvents(); // remove expired events
  try{
    _storage_service.jStorage = JSON.stringify(_storage);
    // If userData is used as the storage engine, additional
    if(_storage_elm) {
      _storage_elm.setAttribute("jStorage",_storage_service.jStorage);
      _storage_elm.save("jStorage");
    }
    _storage_size = _storage_service.jStorage?String(_storage_service.jStorage).length:0;
   }catch(E7){/* probably cache is full, nothing is saved this way*/}
 }

那么,让我们看看,在 jstorage 库中,它的数据保存在哪里,如果本地存储已满,并且它无法写入,那么它就会简单地接受该异常并吞下它。啊!

请问我可以例外吗?在我们的本地副本中,我们至少将其输出到控制台日志。但现在我知道,本地存储在 FireFox 上的上限为 5 MB,在 Chrome 上的上限为 2.5 MB,真的好得令人难以置信。我是一只悲伤的熊猫。

于 2014-03-05T03:59:06.877 回答