问题
I made a Desktop Notification it shows a notification every 1 minute. After 10 second, closes itself.
I gone for a lunch , then computer goes to sleep. When i was back i wake my computer then lots of notification starts.
How can i handle that problem? I want if computer sleeps it shouldnt show notification. How can i control it?
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:
Use Chrome.idle
API to detect whether browser is active or not and trigger your notifications. I guess you can use a configurable interval to query state and hold off your notifications.
Reference
- Chrome.idle
EDIT 1
The state in your code is a callback function, not a string!, So change this code
setInterval(function () {
chrome.idle.queryState(15, state);
if (localStorage.frequency <= interval && state == "active") {
show();
interval = 0;
}
}, 60000);
to
setInterval(function () {
chrome.idle.queryState(15, function (state) {
if (localStorage.frequency <= interval && state == "active") {
show();
interval = 0;
}
});
}, 60000);
来源:https://stackoverflow.com/questions/14458019/chrome-extension-desktop-notification-works-on-sleep