2012-03-21 46 views
1

我們的Intranet網站有一組不尋常的要求。有兩個選項卡向站點打開,您能分辨哪個選項卡處於活動狀態嗎?

  • 它功能像一個多頁的桌面應用程序。對於單個客戶,我們的用戶將在多達30個屏幕上輸入信息。
  • 這是一個基於Asp.Net MVC3的網站,禁用所有會話狀態以便在Web場上進行高效操作。
  • 出於隱私原因,我們不能使用查詢字符串來顯示任何客戶端信息。我們目前使用cookie來存儲客戶身份。
  • 我們的用戶羣希望在一個瀏覽器(IE,FF或Chrome)中打開多個選項卡。

如果我假設用戶只打算使用一個單一的,那麼我可以將客戶端信息存儲在一個簡單的cookie中,一切工作正常。

當用戶打開第二個選項卡時,它將重複使用相同的cookie。不是所需的條件。那麼是否有可能確定瀏覽器標籤之間的差異?

+0

您的要求中提出的斷言看起來似乎表明對寫他們的人缺乏理解。爲什麼要在查詢字符串中保留客戶端信息的唯一標識符危及隱私? – gahooa 2012-03-21 21:18:01

+0

這與數據的性質有關。但是,加密密鑰聽起來似乎是個好主意。 – 2012-03-21 21:19:43

+0

我在想一個通用的唯一標識符就足夠了。 – gahooa 2012-03-29 03:07:28

回答

0

您可以使用sessionStorage對象來存儲特定於單個窗口/選項卡的數據。它可以像其他任何JavaScript對象一樣工作,因爲您可以指定(sessionStorage.foo = "bar"),檢索(baz = sessionStorage.foo)和刪除(delete sessionStorage.foo),但與其他JS對象不同,任何屬性集都將在單個窗口的頁面加載中保持不變。

唯一的缺點是它不會將這些數據發送到服務器。您必須使用AJAX調用自己完成此操作。

0

調查window.name變量。在頁面加載時,您可以在其中添加獨特的內容,如日期/時間,並將相同的內容存儲在Cookie中(如果不存在)。如果用戶打開一個新的標籤(或窗口),該值將是空的,並且cookie不會。 window.name保持頁面加載(如果內存服務),所以這將允許您唯一標識每個選項卡。

+0

'window.name'不應該被依賴,特別是現在有更合適的解決方案。 – 2012-03-21 22:35:26

相關問題