MENU Mário Valney

Como usar cookies com JavaScript?

Front! 12 de maio de 2014 20 comentários
Front!
  • 12 - 05 - 14
  •        
  • 20

O título desse post é meio estranho se você já trabalha com cookies no back-end ou então se nunca usou em canto nenhum. Mas mesmo assim, tenho certeza que em algum momento você já fez uso dos “biscoitos” =D

 

O que Cookies?

O cookie (biscoito em inglês) é um grupo de dados trocados entre o navegador e o servidor, guardado em um arquivo de texto criado no seu computador. A sua função principal é a de manter a persistência de sessões (e dados) durante a navegação. Ou seja, é uma forma de guardar dados ao fechar/mudar de página. Assim é possível manter sessões, por exemplo.

É por isso que você não faz o login sempre que abre a página do Facebook, Gmail ou de qualquer outro site que armazena sua sessão pelos cookies.

 

Como escrever um Cookie?

Esse será um post rápido, por isso, vou pular direto para a prática, mas antes uma mini-teoria:

Cookies são guardados em pares, então seria algo tipo: username=Mário Valney.

 

document.cookie="username=Mário Valney";

 

E para ler?

Basta chamar escrever var cookir = document.cookie.

document.cookie irá retornar todos os cookies em uma única string como “cookie1=valor1;cookie2=valor2;cookie3=valor3;

 

Utilizando funções para o trabalho

Aqui vão 3 funções extremamente básicas para escrever, ler e apagar um cookie. Elas não incluem os parâmetros com tempo de expiração, caminho, domínio e segurança, que você pode encontrar em, uma das fontes que usei para esse post, a Wikipédia (por mais incrível que pareça… está muito bem escrito lá: meus parabéns para o autor).

function setCookie(name, value, duration) {
        var cookie = name + "=" + escape(value) +
        ((duration) ? "; duration=" + duration.toGMTString() : "");

        document.cookie = cookie;
}
function getCookie(name) {
    var cookies = document.cookie;
    var prefix = name + "=";
    var begin = cookies.indexOf("; " + prefix);

    if (begin == -1) {

        begin = cookies.indexOf(prefix);
        
        if (begin != 0) {
            return null;
        }

    } else {
        begin += 2;
    }

    var end = cookies.indexOf(";", begin);
    
    if (end == -1) {
        end = cookies.length;                        
    }

    return unescape(cookies.substring(begin + prefix.length, end));
}
function deleteCookie(name) {
       if (getCookie(name)) {
              document.cookie = name + "=" + "; expires=Thu, 01-Jan-70 00:00:01 GMT";
       }
}

Case

Estou escrevendo esse post, pois precisei usar em um dos sites que estou desenvolvendo no momento.

Basicamente, é uma landing page, na qual o usuário preenche um cadastro e ao enviar a página é recarregada, contudo eu precisava que um dos campos estivesse disponível na próxima etapa. Por isso, cada vez que ele digita no campo e finalmente clica no botão de “enviar”, o cookie é salvo e na próxima página é lido e o valor do campo escrito no novo input. Massa, né?

 

Para finalizar

Sempre que falo de cookies, lembro de um dos piores (e mais legais) trocadilhos que já ouvi/li sobre:

 

 

Seu cookie está com problemas!

 

Fonte: Vida de Programador

Por favor, considere desativar o AdBlock

Não perca nenhuma novidade, assinando nossa newsletter!



Não se preocupe: não enviaremos muitos e-mails, nem mostraremos seu e-mail para ninguém. Dúvidas?


Deixe seu comentário! Dúvida sobre como comentar
ou vai postar código? Leia antes.