2012-04-05 69 views
0

我想編寫一個擴展程序,以便在指定的時間每天顯示桌面通知。其通過Chrome的API咋一看,似乎只有這樣,才能做到這將是:以足夠低的分辨率不每天在特定時間顯示桌面通知

  • 創建背景頁我的分機,
  • 使用的setInterval()稅收CPU(甚至5分鐘罰款),
  • 當間隔火災時,檢查當前時間是否在所需的時間後,
  • 確保用戶尚未顯示通知今天。

(最後一步的細節與我的問題無關,只是爲了表明我意識到我需要阻止通知的「拍打」)。

雖然這似乎相當間接且可能很昂貴;有沒有辦法解決?需要背景頁嗎?

我想我可以直接調用setTimeout()並且只觸發一次事件(通過計算現在&所需時間之間的時間),然後在顯示通知之後再次調用它。出於某種原因,這聽起來更「脆弱」的,雖然我不知道爲什麼......

+0

好辦法 - 我想setInterval不太好,因爲當你有一天的延遲和瀏覽器中執行的setTimeout重新開始,然後通知將不會顯示 – hamczu 2012-04-06 14:01:56

+0

感謝hamczu,在被重新啓動,我只想重新啓動的setInterval定時器瀏覽器的情況下,因爲我後臺頁面將再次收到DOMContentLoaded事件。 – 2012-04-09 13:39:28

回答

1

我想你會希望背景頁面順利做到這一點。您不能使用內容腳本,因爲您需要保持「狀態」/計時器。

所以,當後臺第一次加載頁面(瀏覽器啓動),你的工作出當前時間和偏移到下一個通知時間和setInterval到精確的時間間隔。這樣你就不需要每五分鐘進行一次輪詢和/或如果你已經顯示了這條信息,你就可以進行調查。您只需在確切的時間顯示它。這必須比投票更高效,更有效,更清潔。在通知時,您只需重新設置時間間隔。

一些樣品的功能在這裏:

setTimeout but for a given time

通過閱讀上面的帖子,並從在網絡上快速搜索看來,你應該沒有問題,然後調用setInterval一個時間間隔,如每天一次。加爾文建議25天!

這就是我將如何接近它。

編輯:由於發佈一兩件事,已涌現想到的是,如果PC被休眠了n個小時發生了什麼?我需要自己測試一下這個類似的項目,所以一旦我有機會對此進行測試,我會進行更新。

+0

感謝理查德,我想我對使用後臺頁面有點猶豫,因爲谷歌的文檔聲明,除非需要(因爲他們使用資源),否則它們應該被避免,但這絕對是似乎要走的路。我也想知道冬眠的事情,但希望Chrome能夠考慮到這一點。 (順便說一句,這將是桌面機器的內部工具,所以我可能不需要擔心太多......) – 2012-04-09 13:36:33