测试localStorage是否已满

时间:2014-02-09 19:48:41

标签: javascript jquery local-storage

我正在学习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;
};

1 个答案:

答案 0 :(得分:2)

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

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
}