Window: sessionStorage 屬性

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

只讀的 sessionStorage 屬性會訪問當前 的會話 Storage 物件。sessionStoragelocalStorage 類似;不同之處在於,localStorage 僅按源進行分割槽,而 sessionStorage 則按源和瀏覽器選項卡(頂級瀏覽上下文)進行分割槽。sessionStorage 中的資料僅在頁面會話期間保留。

  • 每當在瀏覽器中的特定選項卡中載入文件時,就會建立一個唯一的頁面會話並分配給該特定選項卡。該頁面會話只能在該特定選項卡中訪問。主文件和所有嵌入的 瀏覽上下文(iframe)會按其源進行分組,並且每個源都可以訪問其自己的獨立儲存區域。
  • 如果頁面有 openersessionStorage 最初是開啟它的 sessionStorage 物件的副本。但是,它們仍然是獨立的,一個的更改不會影響另一個。要防止 sessionStorage 被複制,請使用可移除 opener 的技術之一(請參閱 Window.opener)。
  • 頁面會話在選項卡或瀏覽器開啟期間持續存在,並且在頁面重新載入和恢復時會得到保留。
  • 在新選項卡或視窗中開啟頁面會建立一個新的會話,其值與頂級瀏覽上下文的值相同,這與會話 cookie 的工作方式不同。
  • 關閉選項卡/視窗將結束會話並清除 sessionStorage 中的資料。

一個 Storage 物件,可用於訪問當前源的會話儲存空間。

異常

SecurityError

在以下情況之一中丟擲

  • 源不是 有效的 scheme/host/port 組合。例如,如果源使用 file:data: scheme,則可能發生這種情況。
  • 請求違反了策略決定。例如,使用者已將瀏覽器配置為阻止頁面持久化資料。

請注意,如果使用者阻止 cookie,瀏覽器可能會將其解釋為阻止頁面持久化資料的指令。

示例

基本用法

js
// Save data to sessionStorage
sessionStorage.setItem("key", "value");

// Get saved data from sessionStorage
let data = sessionStorage.getItem("key");

// Remove saved data from sessionStorage
sessionStorage.removeItem("key");

// Remove all saved data from sessionStorage
sessionStorage.clear();

重新整理之間儲存文字

以下示例會自動儲存文字欄位的內容,並在瀏覽器重新整理時恢復文字欄位內容,以免丟失任何輸入。

js
// Get the text field that we're going to track
let field = document.getElementById("field");

// See if we have an autosave value
// (this will only happen if the page is accidentally refreshed)
if (sessionStorage.getItem("autosave")) {
  // Restore the contents of the text field
  field.value = sessionStorage.getItem("autosave");
}

// Listen for changes in the text field
field.addEventListener("change", () => {
  // And save the results into the session storage object
  sessionStorage.setItem("autosave", field.value);
});

注意: 有關完整示例,請參閱 使用 Web Storage API 文章。

規範

規範
HTML
# dom-sessionstorage-dev

瀏覽器相容性

另見