Chrome扩展程序桌面通知在睡眠状态下有效

时间:2013-01-22 11:57:52

标签: google-chrome-extension notifications sleep

我制作了桌面通知,每1分钟显示一次通知。 10秒后,关闭自己。

我去吃午饭,然后电脑进入睡眠状态。当我回来时,我唤醒了我的电脑然后开始通知很多通知。

我该如何处理这个问题?我想如果电脑睡不着它就不应该显示通知。我该如何控制它?

Background.js

function show() {

   var notification = webkitNotifications.createHTMLNotification(
  'notification.html'  
);

  notification.show();
}

// Conditionally initialize the options.
if (!localStorage.isInitialized) {
  localStorage.isActivated = true;   // The display activation.
  localStorage.frequency = 1;        // The display frequency, in minutes.
  localStorage.isInitialized = true; // The option initialization.
}


if (window.webkitNotifications) {
  // While activated, show notifications at the display frequency.

  if (JSON.parse(localStorage.isActivated)) { show(); }

  var interval = 0; // The display interval, in minutes.


  setInterval(function() {
  interval++;     
  chrome.idle.queryState(15, state); 
  if(localStorage.frequency <= interval && state=="active")
     { show(); 
       interval = 0;
     }

  }, 60000);

}

1 个答案:

答案 0 :(得分:4)

使用Chrome.idle API检测浏览器是否处于活动状态并触发通知。我猜您可以使用可配置的时间间隔来查询状态并暂停通知。

参考

编辑1

代码中的状态是回调函数,而不是字符串!,所以更改此代码

setInterval(function () {
    chrome.idle.queryState(15, state);
    if (localStorage.frequency <= interval && state == "active") {
        show();
        interval = 0;
    }

}, 60000);

setInterval(function () {
    chrome.idle.queryState(15, function (state) {
        if (localStorage.frequency <= interval && state == "active") {
            show();
            interval = 0;
        }

    });
}, 60000);