Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Cachear uma ação do usuário

Eu adicionei um botão em um site para que o usuário possa deixar ele em “modo noturno”. Porém caso ele vá para uma nova notícia, o site estará com o modo noturno desativado.

É possível fazer com que o navegador cacheie essa informação, para que uma vez que ele deixe o modo em modo noturno, as outras notícias que ele acesse já estejam também com essa classe?

Eu tentei fazer da seguinte forma, porém quando vou para a outra noticia, o modo noturno ainda esta desativado...

var menu = document.querySelector('body.single-news');
var button = document.querySelector('button#skin-btn');

button.addEventListener('click', function() {

    var modoNoturnoAtivo = localStorage.getItem('modo_noturno_ativo') || false;

    localStorage.setItem('modo_noturno_ativo', !modoNoturnoAtivo);

    var open = menu.classList.contains('light-skin');
    menu.classList.toggle('light-skin');
});

No caso, removendo a classe "light-skin", é ativado o modo noturno.

3 respostas

Essa parte do código acho que está certo, pelo menos em minha opinião. Só que você precisa também carregar essa configuração no onload do página...

Pois é, ele ta até ficando salvo no Application, mas não ta salvando a ação que estou fazendo (removendo a classe) :(

solução!

Tenta forçar a remoção no onload da seguinte forma

var modoNoturnoAtivo = localStorage.getItem('modo_noturno_ativo') || false;

if(modoNoturnoAtivado){
    menu.classList.remove('light-skin');
}

Até

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software