Come posso scrivere uno script per rilevare quando un utente modifica l'orario di sistema in JS?Rilevamento delle modifiche all'ora di sistema in JavaScript
risposta
Non esiste un modo (portatile) per tenere traccia di una variabile in JavaScript. Inoltre, le informazioni sulla data non si trovano nel DOM, quindi non si ha la possibilità che un evento DOM venga attivato.
Il meglio che puoi fare è usare setInterval
per controllare periodicamente (ogni secondo?). 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);
Questo è esattamente. Grazie. Ma il tempo di ritorno, non succede nulla. – AHOYAHOY
@yomash, potrebbe trattarsi di un problema con Windows o Chrome; Ho notato che è stato necessario un po 'di tempo per propagare le modifiche a ritroso nel tempo. Succede, tuttavia, ma solo pochi secondi dopo il previsto. – strager
sì, problema cromato (su ubuntu). Grazie. – AHOYAHOY
Vuoi dire se stanno cambiando il proprio tempo di sistema in qualcosa che è sbagliato? È possibile chiedere all'utente il proprio fuso orario e ottenere l'ora corretta dal server, quindi confrontarlo con l'ora di sistema dell'utente.
La mia pagina ha generato eventi nel momento esatto. Ad esempio, quando l'utente modifica l'orario di sistema, salta diversi eventi. – AHOYAHOY
Non credo che ci sia una soluzione a quello che stai chiedendo, ma è possibile ottenere gli utenti fuso orario compensate.
new Date().getTimezoneOffset() * -1
Questo restituisce l'offset in minuti da GMT. Bare a mente anche se questo non tiene in considerazione la DST.
Check in una funzione di intervallo che il tempo non ha cambiato troppo:
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
testato su Windows con Opera & FF e funziona perfettamente.
Il mio male, non ho letto il codice abbastanza attentamente. – 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);
In teoria, questo dovrebbe funzionare. Controllerà ogni secondo per assicurarsi che l'ora non sia stata cambiata. Nota che utilizzo 1100 millisecondi poiché la maggior parte degli interpreti JS non attiva gli eventi esattamente all'ora specificata.
Spero che questo aiuti!
È possibile controllare ogni 30 secondi, ecc. Se il nuovo Tempo è disattivato di oltre 30 secondi +/- una certa soglia, è possibile eseguire un confronto più esauriente per determinare quanto è stato modificato.
- 1. Rilevamento delle modifiche in un array Javascript utilizzando l'oggetto Proxy
- 2. Rilevamento delle modifiche del modello in SQLAlchemy
- 3. Rilevamento delle modifiche delle celle in angular.js e ng-grid
- 4. Rilevamento modifiche non salvate
- 5. Rilevamento delle modifiche di stato apportate a BluetoothAdapter?
- 6. Rilevamento delle modifiche nel modello; php yii framework
- 7. Come verificare se il rilevamento delle modifiche è abilitato
- 8. Rilevamento delle funzionalità CSS con Javascript
- 9. AngularJS - Rilevamento, stallo e cancellazione delle modifiche al percorso
- 10. JavaScript setTimeout e modifiche all'ora di sistema causano problemi
- 11. isInIframe rilevamento in Javascript
- 12. Modifiche al rilevamento JPA di EclipseLink
- 13. cache di raggruppamento ASP.NET MVC. (Rilevamento delle modifiche ai file css) (comportamento interno)
- 14. Rilevamento del sistema operativo CodeIgniter
- 15. Rilevamento URL con JavaScript
- 16. Rilevamento delle modifiche alle colonne in un trigger di aggiornamento postgres
- 17. Monitoraggio delle modifiche in Visual Studio
- 18. Periodo di conservazione in SQL Server 2008 Monitoraggio delle modifiche
- 19. Sistema di rilevamento intrusioni per siti WordPress
- 20. Rollback delle modifiche in Salesforce
- 21. Ricollegamento di un grafico di entità e rilevamento delle modifiche alla raccolta
- 22. Salvataggio delle modifiche in SlickGrid
- 23. Rilevamento di errori JavaScript in Chrome
- 24. Rilevamento di un'immagine 404 in javascript
- 25. Quali sono i bug che possono essere causati in EF disabilitando il rilevamento automatico delle modifiche?
- 26. Impedisci il ripristino completo dell'eliminazione delle modifiche al registro di sistema in WIN7?
- 27. Esiste un modo standard per il rilevamento delle modifiche con una pagina vincolata a Knockout?
- 28. jQuery - rilevamento del sistema operativo e del sistema operativo versione
- 29. SQL Server 2008: dove viene archiviata la tabella di rilevamento delle modifiche?
- 30. rilevamento javascript regex android
Whoa hai qualche problema serio se gli utenti stanno cambiando ** il tuo ** orario di sistema. – Pointy
@Pointy: quel commento aveva più senso prima della mia modifica: p –
"loro". ovviamente, grazie – AHOYAHOY