3

Chrome で実行されている Web アプリケーションのインスタンスが 1 つだけであることを検出する方法を知っている人はいますか? 私は現在 localStorage を使用してフラグを使用していますが、ブラウザーのクラッシュなどの場合、そのフラグはまだ存在するため、次にアプリにアクセスしようとすると、別のインスタンスが既に実行されていると見なされるため、エラーが発生します。

4

2 に答える 2

0

セッション Cookie に関する私のコメントによると、私が知る限り、Chrome はすべてのタブ (プロセスごと) で同じセッションを維持しているため、特に Chrome を閉じたらセッションをクリアしたい/クリアする必要があるため、理想的なソリューションになる可能性があります。下。

反対の問題を持つ他の関連するスタック オーバーフロー スレッドを次に示します。

タブを閉じてもセッション Cookie が閉じないのはなぜですか?

ブラウザタブでセッションを区別する方法は?

永続的な値 (クロス セッション値) を通常の Cookie/ローカル ストレージに保持することもできます。

于 2013-04-07T09:01:30.010 に答える
0

いくつかの考え:

  1. 古いインスタンスを新しいインスタンスで上書きします。

    アプリの初期化時に、新しい「アプリ ID」を作成し、それを localStorage に上書きします (存在するかどうかに関係なく)。

    アプリの有効期間中、このフラグをときどきチェックしてください。別の値に変更された場合は、このインスタンスを「上書き」する必要があるため、終了します。

  2. タイムスタンプをフラグとして使用します。

    アプリの有効期間中に、現在のタイムスタンプを一定の間隔 (1 秒、10 秒など) でフラグに更新します。

    アプリの初期化時に、現在のタイムスタンプを次のフラグと比較します。

    • 「十分に短い」場合は、アプリが現在実行中であると想定して、続行を拒否できます。

    • 「十分に長い」場合は、最後のインスタンスが予期せず終了したことを意味し、この新しいインスタンスを「安全に」実行でき、役立つ情報を提供できる可能性があります。

于 2013-04-03T05:16:48.190 に答える