【问题标题】:Test if localStorage is full测试localStorage是否已满
【发布时间】:2014-03-07 00:16:55
【问题描述】:

我正在了解localStorage,听起来每个浏览器都给了一个 5MB 的域。

我编写了这段代码来缓存从 ajax 调用返回的数据,它可以工作。但是如何测试 localStorage 是否已满?如果没有可用的 localStorage 空间,我想应该再次发出 ajax 请求。

这是我的代码:

if ( localStorage && localStorage.getItem('myGithub') ) {
  console.log('if statement');
  console.log( JSON.parse( localStorage.getItem( 'myGithub') ) );
  render( JSON.parse( localStorage.getItem( 'myGithub') ) );
}
else {
  console.log('else statment');
  $.ajax({
    url : 'https://api.github.com/users/xxxxxxxxx',
    dataType : 'json',
    success : function (data) {
        if ( localStorage ) {
            localStorage.setItem( 'myGithub', JSON.stringify(data) );    
        }
        console.log(data);
        render(data);
    }
  });
}

//Render method for printing the results to the <body> element.
//Returns html from the ajax call or from localStorage.
function render (myObjx) {
  var results = '';

  for (var prop in myObjx) {
    results += '<p>data.' + prop + ' = ' + myObjx[prop] + '</p>';  
  }

  var printData = $('body').html(results);
  return printData;
};

【问题讨论】:

标签: javascript jquery local-storage


【解决方案1】:

您可以使用以下方法。您可以根据自己的需要进行更改。

function checkAvailable(){
    var test = 'test';
    try {
        localStorage.setItem(test, test);
        localStorage.removeItem(test);
        return true;
    } catch(e) {
        return false;
    }
}

  // And you call below to check the availablity

if(checkAvailable() === true){
    // available
}else{
    // unavailable
}

【讨论】:

  • @OlafDietsche - 他在正文中也在标题中询问了“测试 localStorage 是否已满”“但是我如何测试以查看 localStorage 是否已满?”这就是我回答这个问题的原因。
  • 谢谢保罗。我认为这会奏效。我想测试一下是否有可用空间,因为我不确定如果没有可用空间,我当前的代码将如何工作。谢谢!
猜你喜欢
  • 2017-08-24
  • 2011-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多