任何桌面浏览器都可以检测计算机何时从睡眠中恢复?

如果计算机的“唤醒”事件传播到浏览器并在JavaScript API中可用,那将会很好。 有没有人知道这样的事情是否被执行?

我不知道有什么直接的方法可以做到这一点,但是一种可以很好地了解它发生的方法是设置一个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); 

上述方法可能遇到的问题之一是警报框或其他模式types窗口将暂停JS执行,可能导致错误的唤醒指示。 解决这个问题的一种方法是使用networking工作者(在较新的浏览器上支持)….

 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); 

这有点过时了,但是根据Andrew Mu的回答,我创build了一个简单的JQuery插件来实现这个function: https : //bitbucket.org/paul.okopny/jquery.wakeup-plugin/wiki/Home

用法很简单:

 $.wakeUp(function(sleep_time) { alert("I have slept for " + sleep_time/1000 + " seconds") }); 

希望这将有助于未来的人。