2016-10-31 9 views
2

私のWebアプリケーションでは、状況に応じていくつかのページの読み込みでデスクトップ通知を作成し、2分ごとにページが読み込まれます。 (アプリオープン(と警告が適用されます)を持っている場合、あなたは数分おきにポップアップ取得しますが、それぞれが約20秒後に消えますことを意味Webアプリケーションを処理する画面がロックされているとJavaScriptの通知がより良い

// if warning applies: 
new Notification("Warning!", {body: "You must take some action"}); 

:それはこのような単純な通知、ですブラウザの動作が何であれ)。

これまでのところ、とても良いです。私の問題は、ユーザーのPCがロックされているときに何が起こるかです。通知がポップアップするはずの期間が経過した後、ユーザーがロックされたPCに戻った場合、彼らはすべてがポップアップ表示されることに気付くでしょう。つまり、すべてのメッセージをクリアまたは閉じるために長時間待たなければなりません。 - 迷惑!

私が本当に気に入っているのは、画面がロックされている間、つまりポップアップして消えるまで、通常のライフサイクルを経なければならないということです。それができなければ、画面がロックされていれば、単に発射しないようにしたい。

これを達成する方法を知っている人はいますか?

+0

を私がしなければならないように聞こえるので、これはより多くのhttp://ux.stackexchange.com/ための質問のようであると感じこれらの通知で欠けている目標を達成するには、より良い方法です。 – moopet

答えて

1

検出アイドル状態については、How to detect desktop is locked in javascriptおよびCan JavaScript detect when the PC is locked or the screensaver activates?を参照してください。

要するに、Web上で画面がロックされているかどうかを確認することはできませんが、ブラウザの拡張機能で確認できます。通知のために


新しいを表示する前に、以前の通知をcloseことができます。

function spawnNotification(theBody, theIcon, theTitle, prevNotification) { 
    var options = { 
     body: theBody, 
     icon: theIcon 
    } 

    // Close previous notification before showing new one 
    prevNotification.close.call(prevNotification) 

    var n = new Notification(theTitle,options); 
    setTimeout(n.close.bind(n), 4000); 

    return n 
} 
+0

最初のリンクに従えば、Idle.jsに関する回答は良いです。コードを使用したくない場合は、ユーザーがマウスを動かしているかどうか、またはページ自体と対話しているかどうかを確認するために何かを書くことができます。 – clurect

+0

@clurect、通知にはあまり効果がありません。通知APIを使用している間は、ユーザーが他のページにいると想定し、何らかのアクションを実行するためにページに戻る必要があります。 [Idle.js](https://github.com/shawnmclean/Idle.js)は、ユーザーがあなたのページとやりとりするかどうかを確認することです。ブラウザやシステムとの対話についてはわかりません。 – terales

関連する問題