O jQuery pode ler / gravar cookies em um navegador?

99

Exemplo simples: quero ter alguns itens em uma página (como divs ou linhas de tabela) e quero permitir que o usuário clique neles para selecioná-los. Isso parece bastante fácil em jQuery. Para salvar em quais itens um usuário clica sem nenhum post back do lado do servidor, pensei que um cookie seria uma maneira simples de fazer isso.

  1. Isso pressupõe que um cookie está OK neste caso, correto?
  2. Se estiver correto, a API jQuery tem alguma maneira de ler / gravar informações de cookie que seja melhor do que as APIs JavaScript padrão?
Casademora
fonte

Respostas:

52

A "API" JavaScript padrão para definir um cookie é tão fácil quanto:

document.cookie = 'mycookie=valueOfCookie;expires=DateHere;path=/'

Use o plugin de cookies jQuery como:

$.cookie('mycookie', 'valueOfCookie')
Adão
fonte
14
Sim, escrever cookies é fácil, mas lê-los é meio chato, já que você tem que dividir strings e outras coisas. Se você já estiver usando JQuery, então o plugin de cookies pode ser bom ... Uma coisa chata sobre a leitura de cookies é que alguns navegadores removem o ponto-e-vírgula final e outros não ... é bom ter alguém manipulando tudo isso.
Peter Ajtai
8
Ah, e o plugin de cookie JQuery tem apenas 40 linhas de JS ... e você pode editá-lo conforme desejar, para que não sinta que está entrando na zona de perigo de abstração.
Peter Ajtai
3
Não relacionado ao jQuery conforme solicitado. O comentário de Peter Ajtai mostra porque o casademora pede o plugin jQuery em vez do Javascript.
CallMeLaNN
4
Aqui está o link atualizado para as pessoas que acabam em links inativos ou site plugins.jquery.com com defeito: github.com/carhartl/jquery-cookie
Wiebe Tijsma
18

Você precisará do plug-in de cookie, que fornece várias assinaturas adicionais para a função de cookie.

$.cookie('cookie_name', 'cookie_value')armazena um cookie transitório (só existe dentro do escopo desta sessão, enquanto $.cookie('cookie_name', 'cookie_value', 'cookie_expiration")cria um cookie que durará entre as sessões - consulte http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/ para mais informações no plug-in de cookie JQuery.

Se você deseja definir cookies que são usados ​​para todo o site, você precisará usar JavaScript desta forma:

document.cookie = "name=value; expires=date; domain=domain; path=path; secure"
Steve Moyer
fonte
1
parece que este link está morto no momento da redação deste artigo
Mark Schultheiss
11

Um novo plugin jQuery para recuperação e manipulação de cookies com ligação para formulários, etc: http://plugins.jquery.com/project/cookies


fonte
3
Para quem ler o link muito rapidamente, observe o 's' no final do cookie para tornar a resposta diferente da de Alex Fort
Patrick
2
Aqui está um link melhor no momento em que escrevemos github.com/carhartl/jquery-cookie
Wiebe Tijsma
1
@Zidad que não é o mesmo plugin vinculado por Giver Of Cookies. O link que
JAAulde
@JAAulde Ah, eu não sabia disso. Porque o link estava morto :) Obrigado!
Wiebe Tijsma
7

Para responder a sua pergunta, sim. O outro respondeu essa parte, mas também parece que você está perguntando se essa é a melhor maneira de fazer isso.

Provavelmente dependeria do que você está fazendo. Normalmente, você faria um usuário clicar nos itens que deseja comprar (pedido, por exemplo). Em seguida, eles pressionariam um botão de compra ou checkout. Em seguida, o formulário seria enviado para uma página e processaria o resultado. Você poderia fazer tudo isso com um cookie, mas eu acharia mais difícil.

Você pode querer postar sua segunda pergunta em outro tópico.

SeanDowney
fonte
4

Você pode navegar por todos os plug-ins jQuery marcados com "cookie" aqui:

http://plugins.jquery.com/plugin-tags/cookies

Muitas opções lá.

Confira aquele chamado jQuery Storage, que tira proveito do localStorage do HTML5. Se localStorage não estiver disponível, o padrão é cookies. No entanto, não permite que você defina a expiração.

Marshall Æon
fonte
4

Parece que o plugin de cookies jQuery não está disponível para download. No entanto, você pode baixar o mesmo plugin de cookie jQuery com algumas melhorias descritas em jQuery e Cookies (obter / definir / excluir e um plugin) .

Amante de jQuery
fonte
Também percebi que o desenvolvimento do plugin do cookie parou aí desde o primeiro lançamento e não tenho certeza se ele é compatível com jQuery 1.4 *
CallMeLaNN
O plugin é compatível com jQuery 1.4, uma vez que a sintaxe de extensão não mudou desde então ...
jQuery Lover
2

Consegui escrever um script que permite ao usuário escolher o seu idioma, usando o script de cookies de Klaus Hartl . Levei algumas horas de trabalho e espero poder ajudar outras pessoas.

Porta Shqipe
fonte