Quero acessar um cookie em varias abas do navegador, como posso fazer isso?
Por exemplo criei o Cookie numa página, aí mudo de página e quero somar 10 ao valor que está no cookie clicando num botão.
Acessar Cookies em outras abas
22 Respostas
Se estiver no mesmo domínio, basta acessar o cookie normalmente.
Tenho um código, mas quando vou abrir o cookie ele reseta.
Vc definiiu a pontuação fixa no seu cookie (document.cookie = "pontos=100"). E não achei a parte em que a pontuação é atualizada.
Humm. Como eu poderia fazer essa atualização?
Nesse link tem um exemplo: https://www.w3schools.com/js/js_cookies.asp, procure por ** A Function to Set a Cookie**.
Ou vc pode usar essa lib js para fazer isso de maneira mais tranquila
O setCookie irá mostrar meu cookie, certo?
Aí depois de criado posso linkar essa função a um botão e meu cookie sera exibido?
Set significa “definir”, ou seja, a função setCookie irá definir um valor à um cookie. Nesse mesmo link, tem a função getCookie que irá “pegar” (a palavra get) o valor do cookie.
Ok. Criei o cookie, aí clico em um botao para fazer uma operação somando mais 1 ao cookie, isso eu faço no getCookie?
Veja bem:
- getCookie = pegar o valor do cookie
- setCookie = alterar o valor do cookie
Se vc precisa somar +1, vc pode tentar algo assim:
var valor = getCookie('somaPontos');
var novoValor = valor + 1;
setCookie('somaPontos', novoValor);
Você resolveu usar a solução na unha (do site W3C) ou da lib do github que mandei?
peguei no W3C
function setCookie(valor) {
document.cookie = "pontos" + "=" + valor;
}
function getCookie(name) {
var pattern = RegExp(name + "=.[^;]*")
var matched = document.cookie.match(pattern)
if (matched) {
var cookie = matched[0].split('=')
return cookie[1]
}
return "";
}
var valor = getCookie(‘pontos’);
var novoValor = valor + 1;
setCookie(‘pontos’, novoValor);
Use essas funções:
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000));
var expires = "expires="+d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var name = cname + "=";
var ca = document.cookie.split(';');
for(var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
Para salvar o valor dos pontos, faça:
var pontos = //lógica para recuperar a pontuação atual
setCookie('pontuacao', pontos);
E para recuperar o os pontos, faça:
var pontos = getCookie('pontuacao');
// aqui faça o que quiser com os pontos
Assim? E para sempre somar mais 1, chamo qual função?
function setCookie(cname, cvalue) {
var d = new Date();
d.setTime(d.getTime() + (365 * 24 * 60 * 60 * 1000));
var expires = “expires=” + d.toUTCString();
document.cookie = cname + “=” + cvalue + “;” + expires + “;path=/”;
}
function getCookie(cname) {
var name = cname + “=”;
var ca = document.cookie.split(’;’);
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ’ ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return “”;
}
var pontos = 0
setCookie(‘pontuacao’, pontos); //nome do cookie - valor de pontos
var pontos = getCookie(‘pontuacao’);
var novoValor = pontos + 1;
setCookie(‘pontuacao’, novoValor);texto em negrito
Vc tem que incrementar 1 ponto na sua lógica de pontuação. Em que momento que a pontuação tem que ser incrementada?
É um quiz, então quando eu clicar na resposta certa será incrementado 1 ponto e trocará de aba para a próxima pergunta.
Então crie um função para fazer isso:
var valor = getCookie('somaPontos');
var novoValor = valor + 1;
setCookie('somaPontos', novoValor);
E chame a função quando a resposta certa for clicada.
Crio a função com esse código q me mandou?
Var valor = getCookie…
Sim, mas elabore sua lógica.
A lógica é essa, quando a resposta certa ser clicada chamará essa função.
funcion pontos(){
var valor = getCookie(‘somaPontos’);
var novoValor = valor + 1;
setCookie(‘somaPontos’, novoValor);
}
Eu só renomearia a função para algo mais fácil de entender, como: incrementarPontuacao, em vez de apenas “pontos”.
Muito obrigado, mesmo! E desculpe a ignorância ahahah
Só mais uma coisa 
Essa minha função, no document.getElement… Ele imprime NaN.
Você sabe o que pode ser? Ou se estou fazendo algo errado?
function pontos() {
var valor = parseInt(getCookie(‘somaPontos’));
var novoValor = valor + 1;
document.getElementById(‘pontos’).innerHTML = novoValor
setCookie(‘somaPontos’, novoValor);
}
Tente assim:
function pontos() {
var cookie = getCookie(‘somaPontos’);
var valor;
if (!cookie) {
valor = 0;
} else {
valor = parseInt(cookie);
}
var novoValor = valor + 1;
document.getElementById(‘pontos’).innerHTML = novoValor
setCookie(‘somaPontos’, novoValor);
}