Было бы неплохо, если бы событие "пробуждения" компьютера было распространено в браузере и доступно в JavaScript API. Кто-нибудь знает, реализовано ли что-то подобное?
Могут ли какие-либо настольные браузеры обнаруживать, когда компьютер возобновляет сна?
Ответ 1
Я не знаю какого-либо прямого метода для этого, но один из способов получить представление о том, когда это произойдет, - это настроить задачу setInterval, которая выполняется, скажем каждые 2 секунды, и сохраняет время последнего побежал. Затем проверьте, действительно ли в последний раз, когда он работал, намного старше 2 секунд.
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);
Ответ 2
Одна из проблем, с которой вы можете столкнуться с вышеприведенными методами, заключается в том, что окна предупреждений или другие окна модального типа приостанавливают выполнение JS, что может вызвать ложное срабатывание пробуждения. Одним из способов решения этой проблемы является использование веб-работников (поддерживается в новых браузерах)....
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);
Ответ 3
Это немного устарело, но, основываясь на ответе Эндрю Му, я создал простой плагин JQuery для этого: https://bitbucket.org/paul.okopny/jquery.wakeup-plugin/wiki/Home
Использование прост:
$.wakeUp(function(sleep_time) {
alert("I have slept for " + sleep_time/1000 + " seconds")
});
Надеюсь, это поможет кому-то в будущем.