storage

웹확장이 데이터를 저장하고, 확인하고, 저장된 항목의 변화를 감시할 수 있도록 해 준다.

저장소 시스템은 Web Storage API에 기반하는데 약간의 차이가 있다:

  • 비동기로 동작한다.
  • 값은 도메인이 아니라 확장에 딸린 것이다 (예. 같은 키/값 쌍일 경우 확장의 모든 스크립트에서 사용할 수 있다).
  • 저장된 값은 그저 문자열이 아니라 JSON-화가능 값이다. 배열과 객체도 된다. 단 포함된 값도 JSON으로 나타낼 수 있어야 하므로 DOM의 노드는 안된다. 값을 저장하기 전에 JSON 문자열로 바꿀 필요는 없지만, 내부적으로 JSON으로 다뤄지므로 JSON화가능임은 요구된다.
  • 같은 API 호출로 다수의 키/값 쌍을 다룰 수 있다.

이 API를 사용하려면 manifest.json 파일에 "storage" 권한이 포함돼야 한다.

각 웹확장은 자신만의 저장소를 따로 가진다. which can be split into different types of storage.

이 API는 Window.localStorage와 비슷하지만, 확장 코드가 확장 관련 데이터를 저장하는데 Window.localStorage를 사용하지 말 것을 권장한다. 사적이 이유로 사용자가 방문 기록이나 데이터를 지우는 다양한 상황에서 확장이 localStorage API로 저장된 데이터는 지워지지만, storage.local API로 저장한 데이터는 정확하게 유지된다.

자료형

storage.StorageArea
저장소 영역을 표현하는 객체.
storage.StorageChange
저장소 영역의 변화를 표현하는 객체.

속성

storage에는 저장소 영역의 가능한 형식을 나타내는 세가지 속성이 있다.

storage.sync
sync 저장소 영역을 표현한다. sync 저장소의 항목은 브라우저에 동기되므로 사용자가 로그인한 모든 브라우저에서 사용할 수 있다. 기기가 달라도 된다.
storage.local
local 저장소 영역을 표현한다. local 저장소의 항목은 확장이 설치된 기기에 한정된다.
storage.managed
managed 저장소 영역을 표현한다. managed 저장소의 항목은 도메인 관리자가 설정하고 확장은 읽을 수만 있으므로 변경을 시도하면 에러가 발생한다.

이벤트

storage.onChanged
저장소 영역의 항목에 변화가 있으면 발생한다.

브라우저 호환성

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxOperaFirefox for Android
StorageAreaChrome Full support YesEdge Full support 14Firefox Full support 45Opera Full support YesFirefox Android Full support 48
StorageChangeChrome Full support YesEdge Full support 14Firefox Full support 45Opera Full support YesFirefox Android Full support 48
localChrome Full support YesEdge Full support 14Firefox Full support 45
Notes
Full support 45
Notes
Notes The storage API is supported in content scripts from version 48.
Opera Full support YesFirefox Android Full support 48
managedChrome Full support YesEdge No support NoFirefox Full support 57
Notes
Full support 57
Notes
Notes Platform-specific storage backends, such as Windows registry keys, are not supported.
Notes Enforcement of extension-provided storage schemas is not supported.
Notes The onChanged event is not supported.
Opera No support NoFirefox Android No support No
onChangedChrome Full support YesEdge Full support 14Firefox Full support 45Opera Full support YesFirefox Android Full support 48
syncChrome Full support YesEdge Full support 15Firefox Full support 53Opera No support NoFirefox Android No support No

Legend

Full support  
Full support
No support  
No support
See implementation notes.
See implementation notes.

Edge incompatibilities

Example extensions

Acknowledgements

This API is based on Chromium's chrome.storage API. This documentation is derived from storage.json in the Chromium code.

Microsoft Edge compatibility data is supplied by Microsoft Corporation and is included here under the Creative Commons Attribution 3.0 United States License.