Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá, construi um cronometro que funciona muito bem a base de JavaScript, ele funciona através de uma função recursiva que vai decrementando os segundos, minutos e horas...
Entretanto quando eu clico em outra aba o relógio para e quando eu volto ele começa de onde tinha parado. Eu quero que ele continue contando o tempo mesmo que eu mude de aba. Como proceder?
Mas até onde sei o JavaScript permanece rodando se você trocar as abas.
Inclusive fiz um teste, executei o script abaixo e troquei de aba e ele deu o alert normalmente:
<!DOCTYPE HTML>
<html lang="en-US">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script type="text/javascript">
//alert(1);
setTimeout(function(){
//alert("Hello");
alert(1)
}, 3000);
</script>
</body>
</html>
Live Demo:
[https://fiddle.jshell.net/sfcLguot/](https://fiddle.jshell.net/sfcLguot/)
Porem veja bem...
Trocar a aba não é FECHAR!
Apesar que provavelmente os navegadores devem possui uma especie de Memory colector ou algo do genero 'encerrando' o JS.
Vamos ver se alguém pode explicar melhor hehe
Talvez isso possa te ajudar:
[https://developers.google.com/web/fundamentals/getting-started/primers/service-workers](https://developers.google.com/web/fundamentals/getting-started/primers/service-workers)
Armazenar em algum local e depois recuperar a informação.
Utilizando a API de Storage (por exemplo) - https://developer.mozilla.org/pt-BR/docs/Web/API/Storage