Window:storage 事件

Baseline 已廣泛支援

該特性已非常成熟,可在多種裝置和瀏覽器版本上使用。自 2017 年 4 月以來,它已在各大瀏覽器上可用。

當與當前視窗共享同一儲存區域(localStoragesessionStorage)的另一文件更新該儲存區域時,Window 介面的 storage 事件便會觸發。該事件不會在做出更改的視窗上觸發。

  • 對於 localStorage,該事件會在與發起文件同源的所有其他瀏覽上下文中觸發。這包括同源的其他標籤頁。
  • 對於 sessionStorage,該事件會在與發起文件同源且處於同一頂級瀏覽上下文中的所有其他瀏覽上下文中觸發。這隻包括同一標籤頁中的嵌入式 iframe(如果有的話),不包括其他標籤頁。

此事件不可取消,也不會冒泡。

語法

在諸如 addEventListener() 之類的方法中使用事件名稱,或設定事件處理程式屬性。

js
addEventListener("storage", (event) => { })

onstorage = (event) => { }

事件型別

一個 StorageEvent。繼承自 Event

Event StorageEvent

事件屬性

key 只讀

返回一個字串,其中包含被更改的儲存項的鍵名。當更改是由儲存的 clear() 方法引起時,key 屬性為 null

newValue 只讀

返回一個字串,其中包含被更改的儲存項的新值。當更改是由儲存的 clear() 方法呼叫,或儲存項已從儲存中移除時,此值為 null

oldValue 只讀

返回一個字串,其中包含被更改的儲存項的原始值。當儲存項是新新增的,因此沒有任何先前的值時,此值為 null

storageArea 只讀

返回一個表示受影響的儲存物件的 Storage 物件。

url 只讀

返回一個字串,其中包含其儲存發生更改的文件的 URL。

事件處理程式別名

除了 Window 介面,事件處理程式屬性 onstorage 也可在以下目標上使用

示例

storage 事件觸發時,將 sampleList 項記錄到控制檯

js
window.addEventListener("storage", () => {
  // When local storage changes, dump the list to
  // the console.
  console.log(JSON.parse(window.localStorage.getItem("sampleList")));
});

使用 onstorage 事件處理程式屬性可以實現相同的操作

js
window.onstorage = () => {
  // When local storage changes, dump the list to
  // the console.
  console.log(JSON.parse(window.localStorage.getItem("sampleList")));
};

規範

規範
HTML
# event-storage
HTML
# handler-window-onstorage

瀏覽器相容性

另見