Mário Valney
← Arquivo

Front

Como usar cookies com JavaScript?

2 min de leitura

Texto de 2014, publicado originalmente em mariovalney.com e mantido como estava. Ferramentas, versões e links citados podem ter mudado desde então.

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";
document.cookie="username=Mário Valney; expires=Thu, 13 Mai 2014 12:00:00 GMT";

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