屏幕锁定时,可以更好地处理Web应用程序Javascript通知

时间:2016-10-31 15:18:53

标签: javascript web

在我的网络应用程序中,我根据事物的状态在某些页面加载上创建桌面通知,并且每两分钟加载一次页面。这是一个简单的通知,如下所示:

// if warning applies:
new Notification("Warning!", {body: "You must take some action"});

意思是如果您打开应用程序(并且警告适用),那么每隔几分钟就会弹出一次,但每次会在大约20秒后消失(无论浏览器的行为是什么)。

到目前为止,这么好。我的问题是当用户的PC被锁定时会发生什么。如果用户在弹出通知的一段时间后回到锁定的PC,那么他们会发现他们都试图串联弹出,这意味着他们要么等待很长时间才能清除或关闭它们 - - 烦人!

我真正喜欢的行为是,当屏幕被锁定时,通知应该经过正常的生命周期,即弹出并消失。如果失败了,我希望他们在屏幕被锁定时根本不会开火。

有谁知道如何实现这个目标?

1 个答案:

答案 0 :(得分:1)

有关检测空闲状态的讨论,请参阅How to detect desktop is locked in javascriptCan 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
}