2012-04-05 16 views
0

指定した時刻に毎日デスクトップ通知を表示する拡張機能を作成したいと考えています。特定の時刻に毎日デスクトップ通知を表示

  • 、私の拡張のために
  • 使用するsetIntervalを(背景ページを作成しないように十分に低い解像度で):これを行うための唯一の方法は、になりますようにクロームAPIを介して簡単に見を持って、それはそうです
  • インターバルが鳴ったら、現在の時刻が希望の時刻より遅いかどうかを確認してください。
  • ユーザーにはまだ通知が表示されていないことを確認してください。

(最後のステップの詳細は、私の質問とは無関係です。通知の「羽ばたき」を防止する必要があることを示すために入れてください)。

これはむしろ間接的で潜在的に高価ですが、これにはどんな方法がありますか?背景ページは必要ですか?

setTimeout()を呼び出してイベントを1回だけ発生させることができます(今度はどれくらいの時間を計算するかによって)、通知が表示された後でもう一度呼び出します。何らかの理由で、それがなぜ「脆弱」に聞こえるのでしょうか?なぜなら、なぜ私は確信していません...

+0

良いアプローチ - 私は私のために、あなたが一日遅れとブラウザでのsetTimeoutを実行すると、通知は、私はちょうどのsetIntervalタイマーを再起動します再起動して、ブラウザの場合には、 – hamczu

+0

ありがとうhamczuを表示されません再開しますので、のsetIntervalが優れていると思いますバックグラウンドページはDOMContentLoadedイベントを再度受信します。 –

答えて

1

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

バックグラウンドページが最初に読み込まれる(ブラウザが起動する)と、現在の時刻とオフセットが次の通知時刻に設定され、setIntervalがその正確な間隔になります。そうすれば、5分ごとにポーリングする必要はなく、メッセージを表示していれば解決します。必要な正確な時刻に表示するだけです。これは、ポーリングよりはるかに効率的で効果的でクリーンでなければなりません。通知時に、間隔をもう一度リセットするだけです。

ここではいくつかのサンプル機能:

setTimeout but for a given time

上記の記事を読んでから、あなたがそのような一日に一回などの間隔のためのsetIntervalを呼び出す何の問題もないはずと思われるネット上のクイック検索から。カルビンは25日を示唆している!

これが私のアプローチです。

EDIT:PCにn時間休止させるとどうなるでしょうか?私はそれをテストする機会があったので、私は同じようなプロジェクトのためにこれを自分自身でテストする必要があります。

+0

リチャードに感謝します。バックグラウンドページを使用するのはちょっと気になりませんでした。なぜなら、必要がない限り(リソースを使用しているので)、避けてはいけないと書かれているからです。私は休止状態についても疑問に思っていましたが、うまくいけばクロムがそれを考慮に入れています。 (ちなみに、これはデスクトップマシン用の内部ツールですので、あまり心配する必要はありません...) –

関連する問題