Chrome で実行されている Web アプリケーションのインスタンスが 1 つだけであることを検出する方法を知っている人はいますか? 私は現在 localStorage を使用してフラグを使用していますが、ブラウザーのクラッシュなどの場合、そのフラグはまだ存在するため、次にアプリにアクセスしようとすると、別のインスタンスが既に実行されていると見なされるため、エラーが発生します。
2 に答える
セッション Cookie に関する私のコメントによると、私が知る限り、Chrome はすべてのタブ (プロセスごと) で同じセッションを維持しているため、特に Chrome を閉じたらセッションをクリアしたい/クリアする必要があるため、理想的なソリューションになる可能性があります。下。
反対の問題を持つ他の関連するスタック オーバーフロー スレッドを次に示します。
タブを閉じてもセッション Cookie が閉じないのはなぜですか?
永続的な値 (クロス セッション値) を通常の Cookie/ローカル ストレージに保持することもできます。
いくつかの考え:
古いインスタンスを新しいインスタンスで上書きします。
アプリの初期化時に、新しい「アプリ ID」を作成し、それを localStorage に上書きします (存在するかどうかに関係なく)。
アプリの有効期間中、このフラグをときどきチェックしてください。別の値に変更された場合は、このインスタンスを「上書き」する必要があるため、終了します。
タイムスタンプをフラグとして使用します。
アプリの有効期間中に、現在のタイムスタンプを一定の間隔 (1 秒、10 秒など) でフラグに更新します。
アプリの初期化時に、現在のタイムスタンプを次のフラグと比較します。
「十分に短い」場合は、アプリが現在実行中であると想定して、続行を拒否できます。
「十分に長い」場合は、最後のインスタンスが予期せず終了したことを意味し、この新しいインスタンスを「安全に」実行でき、役立つ情報を提供できる可能性があります。