0

毎日指定された時間にデスクトップ通知を表示する拡張機能を書きたいと思います。Chrome API をざっと見てみると、これを行う唯一の方法は次のように思われます。

  • 拡張機能の背景ページを作成し、
  • CPU に負担をかけないように十分に低い解像度で setInterval() を使用します (5 分でも問題ありません)。
  • 間隔が発生したときに、現在の時間が目的の時間よりも後かどうかを確認し、
  • ユーザーが今日、まだ通知を表示されていないことを確認してください。

(最後のステップの詳細は私の質問とは関係ありません。通知の「バタつき」を防ぐ必要があることに気付いたことを示すために入れただけです)。

ただし、これはかなり間接的で、コストがかかる可能性があるようです。これを回避する方法はありますか?背景ページは必要ですか?

setTimeout() を呼び出してイベントを 1 回だけ発生させ (現在と目的の時間の間の時間を計算することにより)、通知が表示された後に再度呼び出すことができると思います。理由はわかりませんが、何らかの理由でより「もろい」ように聞こえます...

4

1 に答える 1

1

背景ページでこれをスムーズに行う必要があると思います。「状態」/タイマーを保持する必要があるため、コンテンツ スクリプトは使用できません。

したがって、バックグラウンド ページが最初にロードされる (ブラウザの開始) ときに、現在の時刻と次の通知時刻へのオフセットと、その正確な間隔への setInterval を計算します。そうすれば、5 分ごとにポーリングしたり、メッセージを表示したかどうかを調べたりする必要がなくなります。必要な正確な時間に表示するだけです。これは、ポーリングよりもはるかに効率的で、効果的で、クリーンでなければなりません。通知時に、間隔を再度リセットするだけです。

ここにいくつかのサンプル関数があります:

setTimeout ですが、一定時間

上記の投稿を読んで、ネットで簡単に検索すると、1 日 1 回などの間隔で setInterval を呼び出すことに問題はないようです。Calvin は 25 日間を提案しています。

それが私がそれにアプローチする方法です。

編集: PC が n 時間休止状態になるとどうなるかが頭に浮かんだことを投稿したので? 同様のプロジェクトでこれを自分でテストする必要があるため、これをテストする機会があれば更新します。

于 2012-04-06T22:52:46.077 に答える