¿Cómo puedo escribir una secuencia de comandos para detectar cuándo un usuario cambia la hora de su sistema en JS?Detección de cambios en la hora del sistema en JavaScript
Respuesta
No hay una forma (portátil) de rastrear una variable en JavaScript. Además, la información de la fecha no está en el DOM, por lo que no tienes la posibilidad de que se desencadene un evento DOM.
Lo mejor que puede hacer es usar setInterval
para verificar periódicamente (¿cada segundo?). Example:
function timeChanged(delta) {
// Whatever
}
setInterval(function timeChecker() {
var oldTime = timeChecker.oldTime || new Date(),
newTime = new Date(),
timeDiff = newTime - oldTime;
timeChecker.oldTime = newTime;
if (Math.abs(timeDiff) >= 5000) { // Five second leniency
timeChanged(timeDiff);
}
}, 500);
Eso es exactamente. Gracias. Pero el cambio de hora atrás, nada sucede. – AHOYAHOY
@yomash, esto puede ser un problema de Windows o Chrome; Noté que tardé un poco en propagar los cambios en el tiempo yo mismo. Sucede, sin embargo, pero solo unos segundos más tarde de lo que cabría esperar. – strager
sí, problema de Chrome (en ubuntu). Gracias. – AHOYAHOY
¿Quiere decir si están cambiando su propio sistema de tiempo a algo que está mal? Puede preguntar al usuario su zona horaria y obtener la hora correcta del servidor, y luego compararla con la hora del sistema del usuario.
Mi página ha generado eventos en el momento exacto. Cuando el usuario cambia la hora de su sistema, saltee varios eventos, por ejemplo. – AHOYAHOY
No creo que haya una solución a lo que está pidiendo, pero se puede hacer que los usuarios de zona horaria compensados.
new Date().getTimezoneOffset() * -1
Esto devuelve el desplazamiento en minutos desde GMT. Sin embargo, ten en cuenta que esto no tiene en cuenta el horario de verano.
Comprobar en una función de intervalo que el tiempo no ha cambiado demasiado:
function getTime() {
var d = new Date();
return d.getTime();
}
function checkTime() {
if (Math.abs(getTime() - oldtime) > 2000) { // Changed by more than 2 seconds?
alert("You changed the time!");
}
oldtime = getTime();
}
var oldtime = getTime();
setInterval(checkTime, 1000); // Check every second that the time is not off
probado en Windows con Opera & FF y funciona a la perfección.
Malo, no leí el código con cuidado. – mattbasta
var last_time = new Date().getTime();
setInterval(function() {
var time = new Date().getTime();
var offset = time - last_time;
if(offset < 0 || offset > 1500) {
// Time has been changed
}
last_time = time;
}, 1000);
En teoría, esto debería funcionar. Verificará cada segundo para asegurarse de que no haya cambiado la hora. Tenga en cuenta que utilizo 1100 milisegundos, ya que la mayoría de los intérpretes de JS no activan eventos exactamente en el momento especificado.
Espero que esto ayude!
Puede comprobar cada 30 segundos, etc. Si la nueva Hora está desactivada en más de 30 segundos +/- algún umbral, podría hacer una comparación más exhaustiva para determinar cuánto ha cambiado.
- 1. JavaScript setTimeout y cambios a la hora del sistema causan problemas
- 2. la detección de cambios en un objeto JavaScript
- 3. Detección de inactividad del sistema
- 4. Obtener la hora actual del sistema?
- 5. Obtener la hora actual del sistema
- 6. ¿Cómo obtener la hora del sistema en Haskell usando Data.Time.Clock?
- 7. ¿Cómo obtengo la hora del sistema local en PHP?
- 8. Mercurial - diff múltiples conjuntos de cambios en la misma hora?
- 9. Detección isInIframe en Javascript
- 10. PHP detección de la codificación del sistema de archivos
- 11. ¿Qué especificamente son la hora del reloj de pared, la hora de la CPU del usuario y la hora de la CPU del sistema en UNIX?
- 12. Configurar la hora del sistema del teléfono ROOTED
- 13. ¿Cómo mostrar la hora actualizada como hora del sistema en una etiqueta usando C#?
- 14. Temporizador estable independiente de la hora del sistema
- 15. Javascript FileReader detección en Safari
- 16. Convierte un QDateTime en UTC a hora local del sistema
- 17. ¿Cómo obtengo la hora del día en javascript/Node.js?
- 18. Detecta cambios en la orientación usando javascript
- 19. SystemEvent.TimeChange mostrando la misma hora, incluso cambios de zona horaria
- 20. Detección de la altura del área de visualización usando Javascript
- 21. formato de hora en javascript
- 22. Ejecutar como administrador: requireAdministrator & ClickOnce + emular la hora del sistema
- 23. Detección de URL con JavaScript
- 24. DST Pitón y hora Detección Zona después de la adición
- 25. ¿Cómo puedo acceder a la hora del sistema usando NASM?
- 26. Detección de objeto de cámara en JavaScript
- 27. Javascript Detección de colisiones
- 28. En Java, ¿cuál es la forma más rápida de obtener la hora del sistema?
- 29. Obtener la hora del sistema actual de una máquina en la red
- 30. Detección de cuerpo humano en Javascript
Whoa tienes algunos problemas serios si los usuarios cambian ** tu ** hora del sistema. – Pointy
@Pointy: ese comentario tenía más sentido antes de mi edición: p –
"their". por supuesto, gracias – AHOYAHOY