如果计算机的“唤醒”事件被传播到浏览器并在 JavaScript API 中可用,那就太好了。有谁知道这样的事情是否实施?
任何桌面浏览器都可以检测到计算机何时从睡眠中恢复?
IT技术
javascript
sleep
2021-01-15 23:52:30
6个回答
我不知道有什么直接的方法可以做到这一点,但是您可以很好地了解它何时发生的一种方法是设置一个 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);
使用上述方法可能会遇到的问题之一是警告框或其他模态类型的窗口会暂停 JS 执行,这可能会导致错误的唤醒指示。解决此问题的一种方法是使用网络工作者(在较新的浏览器上受支持)。...
DetectWakeup.js(必须是自己的文件)
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);
然后在您的应用程序中,像这样使用它:
var myWorker = new Worker("DetectWakeup.js");
myWorker.onmessage = function (ev) {
if (ev && ev.data === 'wakeup') {
// wakeup here
}
}
这有点过时了,但根据 Andrew Mu 的回答,我创建了一个简单的 JQuery 插件来做到这一点:https : //github.com/paulokopny/jquery.wakeup-plugin
用法很简单:
$.wakeUp(function(sleep_time) {
alert("I have slept for " + sleep_time/1000 + " seconds")
});
希望这会在将来对某人有所帮助。
除了其他人的非常好的答案和解释外,您还可以依赖online
,offline
事件。撇开是否online
真的在线不谈,通常,除了真正断开互联网连接之外,当用户的机器从睡眠中恢复时,也会触发此事件。
因此,理想的解决方案是将计时器检查与在线和离线事件相结合。
var lastTime = (new Date()).getTime();
setInterval(function() {
var currentTime = (new Date()).getTime();
if (currentTime > (lastTime + 2000*2)) { // ignore small delays
setTimeout(function() {
//enter code here, it will run after wake up
}, 2000);
}
lastTime = currentTime;
}, 2000);
其它你可能感兴趣的问题