在我的网络应用程序中,我根据事物的状态在某些页面加载上创建桌面通知,并且每两分钟加载一次页面。这是一个简单的通知,如下所示:
// if warning applies:
new Notification("Warning!", {body: "You must take some action"});
意思是如果您打开应用程序(并且警告适用),那么每隔几分钟就会弹出一次,但每次会在大约20秒后消失(无论浏览器的行为是什么)。
到目前为止,这么好。我的问题是当用户的PC被锁定时会发生什么。如果用户在弹出通知的一段时间后回到锁定的PC,那么他们会发现他们都试图串联弹出,这意味着他们要么等待很长时间才能清除或关闭它们 - - 烦人!
我真正喜欢的行为是,当屏幕被锁定时,通知应该经过正常的生命周期,即弹出并消失。如果失败了,我希望他们在屏幕被锁定时根本不会开火。
有谁知道如何实现这个目标?
答案 0 :(得分:1)
有关检测空闲状态的讨论,请参阅How to detect desktop is locked in javascript和Can JavaScript detect when the PC is locked or the screensaver activates?。
简而言之:您无法检查屏幕是否已锁定在网络上,但您可以在浏览器扩展程序中使用。
对于通知,您可以在显示新内容之前close之前的任何通知:
function spawnNotification(theBody, theIcon, theTitle, prevNotification) {
var options = {
body: theBody,
icon: theIcon
}
// Close previous notification before showing new one
prevNotification.close.call(prevNotification)
var n = new Notification(theTitle,options);
setTimeout(n.close.bind(n), 4000);
return n
}