LocalStorage: Check if localStorage is available
LocalStorage: Check if localStorage is available
by Nirvanachain
JavaScript
//Check if localStorage is available. The space for localStorage may be full.
function checkAvailable(){
var test = 'test';
try {
localStorage.setItem(test, test);
localStorage.removeItem(test);
return true;
} catch(e) {
return false;
}
};
//render from localStorage.
function renderFromStorage () {
console.log( JSON.parse( localStorage.getItem( 'myGithub') ) );
render( JSON.parse( localStorage.getItem( 'myGithub' ) ) );
};
//ajax request for data. Set localStorage to 'myGithub' if localStorage is available.
function jax () {
$.ajax({
url : 'https://api.github.com/users/matthewdordal',
dataType : 'json',
success : function (data) {
if ( localStorage ) {
//Store data in localStorage
localStorage.setItem( 'myGithub', JSON.stringify(data) );
//Set TimeStamp in localStorage
var d = new Date();
var today = d.getTime();
var additionalTime = 1 * 10 * 1000
var expireCacheAtThisTime = new Date(today + additionalTime);
localStorage.setItem( 'timeStamp', expireCacheAtThisTime );
}
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;
};
function init () {
//If localStorage is available, and if the item 'myGithub' exists, and if space for
//localStorage is available.
if ( localStorage && localStorage.getItem('myGithub') && checkAvailable() === true) {
console.log('if statement - myGithub IS in localStorage')
renderFromStorage();...