<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="utf-8">
<script>
var inicio=0;
var timeout=0;
function empezarDetener(elemento)
{
if(timeout==0)
{
// empezar el cronometro
elemento.value="Detener";
// Obtenemos el valor actual
inicio=new Date().getTime();
// Guardamos el valor inicial en la base de datos del navegador
localStorage.setItem("inicio",inicio);
// iniciamos el proceso
funcionando();
}else{
// detemer el cronometro
elemento.value="Empezar";
clearTimeout(timeout);
// Eliminamos el valor inicial guardado
localStorage.removeItem("inicio");
timeout=0;
}
}
function funcionando()
{
// obteneos la fecha actual
var actual = new Date().getTime();
// obtenemos la diferencia entre la fecha actual y la de inicio
var diff=new Date(actual-inicio);
// mostramos la diferencia entre la fecha actual y la inicial
var result=LeadingZero(diff.getUTCHours())+":"+LeadingZero(diff.getUTCMinutes())+":"+LeadingZero(diff.getUTCSeconds());
document.getElementById('crono').innerHTML = result;
// Indicamos que se ejecute esta función nuevamente dentro de 1 segundo
timeout=setTimeout("funcionando()",1000);
}
/* Funcion que pone un 0 delante de un valor si es necesario */
function LeadingZero(Time)
{
return (Time < 10) ? "0" + Time : + Time;
}
window.onload=function()
{
if(localStorage.getItem("inicio")!=null)
{
// Si al iniciar el navegador, la variable inicio que se guarda
// en la base de datos del navegador tiene valor, cargamos el valor
// y iniciamos el proceso.
inicio=localStorage.getItem("inicio");
document.getElementById("boton").value="Detener";
funcionando();
}
}
</script>
<style>
.crono_wrapper {text-align:center;width:200px;}
</style>
</head>
<body>
<div class="crono_wrapper">
<h2 id='crono'>00:00:00</h2>
<input type="button" value="Empezar" id="boton" onclick="empezarDetener(this);">
</div>
</body>
</html>