2012-03-21 13 views
1

当社のイントラネットサイトには、珍しい一連の要件があります。2つのタブをサイトに開いている場合、どのタブがアクティブであるかを確認できますか?

  • マルチページデスクトップアプリケーションのように機能します。単一のクライアントの場合、ユーザーは最大30の画面に情報を入力します。
  • これは、Webファーム上の効率的な操作のためにすべてのセッション状態が無効になっているAsp.Net MVC3ベースのサイトです。
  • プライバシー上の理由から、クライアントの情報を表示するためにクエリ文字列を使用することはできません。現在、クッキーを使用してクライアントIDを保管しています。
  • 私たちのユーザーは、1つのブラウザ(IE、FF、Chrome)で複数のタブを開くことを望んでいます。

ユーザーが1つだけを使用していると仮定すると、単純なクッキーにクライアント情報を格納することができ、すべて正常に動作します。

ユーザーが2番目のタブを開くと、同じCookieが再利用されます。希望の条件ではありません。ブラウザのタブの違いを判断することは可能ですか?

+0

あなたの要件でアサーションが作成されていると、それを書いた人の理解が不足しているようです。クエリ文字列のクライアント情報に一意の識別子を保持するのはなぜプライバシを脅かすのでしょうか? – gahooa

+0

これはデータの性質に関連しています。しかし、暗号化された鍵は良いアイデアのように聞こえるでしょう。 –

+0

私は一般的な一意の識別子で十分であると思っています。 – gahooa

答えて

0

sessionStorageオブジェクトを使用して、1つのウィンドウ/タブに固有のデータを格納できます。 (sessionStorage.foo = "bar")、検索(baz = sessionStorage.foo)、削除(delete sessionStorage.foo)を割り当てることができますが、他のJSオブジェクトと異なり、プロパティセットは単一ウィンドウ内のページロードにわたって永続的になります。

唯一の欠点は、このデータをサーバーに送信しないことです。あなたはAJAX呼び出しを使用してこれを自分で行う必要があります。

0

window.name変数を調べます。ページの読み込みでは、日付/時刻のような固有のものを入れ、クッキーに同じものを保存することができます(存在しない場合)。ユーザーが新しいタブ(またはウィンドウ)を開くと、値は空になり、Cookieは無効になります。 window.nameは、ページロードを超えて(メモリが使用されている場合)保持されるため、各タブを一意に識別することができます。

+0

'window.name'には頼りにすべきではありません。 –

関連する問題