Skip to content

Instantly share code, notes, and snippets.

@djalmaaraujo
Created June 26, 2012 19:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save djalmaaraujo/2998402 to your computer and use it in GitHub Desktop.
Save djalmaaraujo/2998402 to your computer and use it in GitHub Desktop.
localStorage or Cookies Check
/**
* keyValueDatabase
*
* Init time Branching ou Ramificação em tempo de inicialização
*
**/
/**
Definição de meu Objeto Literal com seus atributos "get" e "set"
por enquanto sem nenhum ação.
**/
var keyValueDatabase = (function(window, document) {
var keyValueDatabase = {
get: null,
set: null,
sniffBrowserStorage: function () {
// Checa pela presença do localStorage para armazenagem de dados
if (typeof localStorage === 'object') {
/*
Injeto no meu Objeto literal keyValueDAtabase a implementação
do método "get" para localStorage.
*/
keyValueDatabase.get = function (key) {
return localStorage.getItem(key);
};
/*
Injeto no meu Objeto literal keyValueDAtabase a implementação
do método "set" para localStorage.
*/
keyValueDatabase.set = function (key, value) {
localStorage.setItem(key, value);
};
/*
Em contrapartida (fallback) para o localStorage, nós optaremos
por salvar as informações via cookies.
*/
} else if (navigator.cookieEnabled === true) {
/*
Injeto no meu Objeto literal keyValueDAtabase a implementação
do método "get" para cookies
(copiado de: http://www.w3schools.com/js/js_cookies.asp).
*/
keyValueDatabase.get = function (key) {
var i,
x,
y,
ARRcookies = document.cookie.split(";");
for (i = 0 ; i < ARRcookies.length ; i++) {
x = ARRcookies[i].substr(0,ARRcookies[i].indexOf("="));
y = ARRcookies[i].substr(ARRcookies[i].indexOf("=")+1);
x = x.replace(/^\s+|\s+$/g,"");
if (x == key) {
return unescape(y);
}
}
};
/*
Injeto no meu Objeto literal keyValueDAtabase a implementação
do método "set" para cookies
(copiado de: http://www.w3schools.com/js/js_cookies.asp).
*/
keyValueDatabase.set = function (key, value) {
var exdate = new Date(),
exdays = 30, // 30 dias salvo
parseValue = escape(value) + ((exdays === null) ? "" : "; expires=" + exdate.toUTCString());
exdate.setDate(exdate.getDate() + exdays);
document.cookie = key + "=" + parseValue;
};
} else {
/*
Faça algo com o usuário que não possui nem cookies
nem localStorage habilitado.
*/
}
}
};
/*
Executa a verificação (Sniff) dos recursos apenas quando a função
for criada.
*/
keyValueDatabase.sniffBrowserStorage();
return keyValueDatabase;
})(window, document);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment