任何桌面浏览器都可以检测计算机何时从睡眠中恢复?
如果计算机的“唤醒”事件传播到浏览器并在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") });
希望这将有助于未来的人。