Sarebbe bello se l'evento "wake up" del computer fosse propagato al browser e disponibile nell'API JavaScript. Qualcuno sa se qualcosa di simile è implementato?È possibile che qualsiasi browser desktop rilevi quando il computer viene riattivato dallo stato di sospensione?
risposta
Non conosco alcun metodo diretto per farlo, ma un modo in cui è possibile avere una buona idea di quando accade è impostare un task setInterval che viene eseguito, ad esempio ogni 2 secondi, e memorizza il tempo in cui esso scorso corso. Quindi controlla se l'ultima volta che è stato eseguito è molto più vecchio di 2 secondi.
var lastTime = (new Date()).getTime();
setInterval(function() {
var currentTime = (new Date()).getTime();
if (currentTime > (lastTime + 2000*2)) { // ignore small delays
// Probably just woke up!
}
lastTime = currentTime;
}, 2000);
Questo è simile a come farei su di esso - solo, utilizzare un intervallo molto più grande di due secondi :-) Immagino che i 5 minuti siano un valore ragionevolmente piccolo (è raro che il mio computer dorma per una piccola quantità di tempo) . Inoltre, un altro modo è quello di registrare quante "zecche" si sono verificate rispetto a quante si supponeva dovessero verificarsi (tenerlo in media). C'è anche il caso limite di una variazione di orario (ora legale, quindi è meglio usare UTC o utente) che può essere marginalizzato. –
+1 per una ragionevole soluzione :) –
Mi ha aiutato :) +1 – Varun
Questo è un po 'datata, ma in base alla risposta da Andrew Mu ho creato un semplice plugin jQuery per farlo: https://bitbucket.org/paul.okopny/jquery.wakeup-plugin/wiki/Home
L'uso è semplice:
$.wakeUp(function(sleep_time) {
alert("I have slept for " + sleep_time/1000 + " seconds")
});
Spero che questo aiuti qualcuno in futuro.
Uno dei problemi che potrebbero verificarsi con i metodi precedenti è che le finestre di avviso o altre finestre di tipo modale interromperanno l'esecuzione di JS causando probabilmente un'indicazione di falso risveglio. Un modo per risolvere questo problema è quello di utilizzare i lavoratori web (supportato nei browser più recenti) ....
var myWorker = new Worker("DetectWakeup.js");
myWorker.onmessage = function (ev) {
if (ev && ev.data === 'wakeup') {
// wakeup here
}
}
// DetectWakeup.js (put in a separate file)
var lastTime = (new Date()).getTime();
var checkInterval = 10000;
setInterval(function() {
var currentTime = (new Date()).getTime();
if (currentTime > (lastTime + checkInterval * 2)) { // ignore small delays
postMessage("wakeup");
}
lastTime = currentTime;
}, checkInterval);
Potresti per favore fare una dimostrazione? Ho provato a risolverlo, ma non mi da niente. Neanche nella console. –
- 1. È possibile che SFINAE rilevi violazioni di accesso private?
- 2. Come sapere quando il controller è stato ripreso dallo sfondo?
- 3. Controllare il motivo per cui il computer ha ripreso dallo stato di ibernazione
- 4. È possibile impedire al browser di seguire il collegamento quando viene attivato l'onclick dell'elemento figlio?
- 5. Come eseguire il debug del browser nativo di Android (non di Chrome) su un computer desktop?
- 6. Rilevare quando il contenuto Iframe è stato caricato (Cross browser)
- 7. Attirare l'attenzione degli utenti quando il browser è ridotto a icona (notifiche desktop cross-browser?)
- 8. È possibile che un oggetto sia spostato quando viene restituito?
- 9. PHP viene eseguito in background quando il browser è chiuso?
- 10. Quali ottimizzazioni esegue un browser quando un elemento DOM viene sottoposto a rendering fuori dallo schermo?
- 11. È possibile che php rilevi i caratteri utf8 codificati a 4 byte?
- 12. Perché non è possibile risolvere la sospensione di STRING?
- 13. Qual è l'evento Javascript che si innesca quando si trascina un file dal desktop al browser
- 14. In che modo i browser desktop gestiscono meta tag mobili?
- 15. Non è stato possibile caricare un file javascript remoto per interrompere l'esecuzione di javascript in qualsiasi browser?
- 16. Come posso sapere se il computer è stato riavviato?
- 17. È possibile trovare la distanza dallo stato di scorrimento inferiore a quello corrente in jquery
- 18. È possibile creare un'app desktop utilizzando l'autenticazione Facebook oauth 2.0 senza richiedere l'interazione del browser?
- 19. È possibile che ActionScript comunichi quando è stato pubblicato un file SWF?
- 20. Android: EditText non può ottenere lo stato attivo dopo essere stato riattivato
- 21. È possibile eseguire qualsiasi linguaggio eseguibile?
- 22. Come posso controllare quando il computer viene messo in pausa o si riattiva?
- 23. È possibile utilizzare il server tableau senza desktop tableau?
- 24. Sviluppa la risoluzione 4K sul desktop o lascia che i browser gestiscano il ridimensionamento?
- 25. MessageBox è modale al desktop
- 26. Visualizzazione della connessione desktop remota attiva su un determinato computer
- 27. È possibile rimuovere l'ordine dai criteri di sospensione?
- 28. impedisce che il thread di linux venga interrotto dallo scheduler
- 29. ViewDidAppear non viene chiamato quando si apre l'app dallo sfondo
- 30. È normale che il codice della libreria java lanci e rilevi molte eccezioni durante l'elaborazione "normale"?
Ne dubito dato che sarebbe probabilmente per colmare il divario tra il browser e il sistema operativo isolato, ma io essere interessato a scoprirlo è, infatti, possibile. –
Che tipo di dispositivo? –
Definisci "sleep", poiché questo termine varia ampiamente per dispositivo. –