ユーザーが私の Web アプリケーションをさまざまなブラウザー ウィンドウで開いたとします。しばらくすると、彼はタイムアウトになり、アプリケーションからサインアウトします。
関連するすべてのブラウザ ウィンドウを閉じたい。どうすればこれを処理できますか?
(GMAILはそうしていると思います)
子ウィンドウへの参照を維持する場合は、window.close()をsetTimeout()と組み合わせて使用できます。
注意として、ユーザーエクスペリエンスを低下させる可能性があるため、ユーザーのウィンドウを閉じるときはおそらく注意が必要です。銀行のWebサイトを開いて、アカウントのトランザクションを確認し、それらをクリア/調整できるようにしたとします。しかし、途中で私は昼食か何かをつかむために逃げます。戻ってみると、すべてのウィンドウが閉じられており、比較的静的なデータのリストを見ているだけなので、再ログインする必要はありませんでしたが、再ログインする必要があります。さらに悪いことに、ウィンドウを閉じることが正しくコーディングされていない場合、ブラウザが完全に閉じられていることに気付く可能性があります。これは間違いなく悪い経験です。
しないでください。典型的なユーザーに関する限り、あなたの Web サイトにはユーザーのウィンドウを閉じる権利がなく、あなたがしようとすると彼らはあなたのサイトを嫌うでしょう。Web サイトの適切な操作は、ユーザーのブラウザーを閉じることができるかどうかにかかっていると考える場合、それは間違っています。
さらに、ユーザー ウィンドウを閉じたり、同様のアクションを実行したりする試みが成功するかどうかを期待する方法はありません。したがって、ユーザーがブラウザーで何をするかに関係なく、Web サイトが適切に機能するように時間を費やしてください。その上、その方が簡単です。
フォーカスが (アプリケーションの) ウィンドウに移動したときに、セッションがまだ有効かどうかをチェックするスクリプトレットを作成します。そうでない場合は、コマンドを送信してウィンドウを閉じます。