LoginSignup
101
81

More than 5 years have passed since last update.

WebStorage 入門

概要

Electronやハイブリットアプリ開発の際に、ローカルにデータを持たしたいと思い再入門しました。
ざっくりいうと、WebStorageとはブラウザにデータを保存しておく為の仕組みです。
Cookieよりも高機能です。(永続的なデータ保存・ストレージ容量が4MB)

注意点

ブラウザにより使えない場合がある。
最新のブラウザなら基本なんでも大丈夫です。
(IE8以上なら大丈夫。)

ルール

同一オリジンでデータを保存します。

オリジンとは

URLっぽいものの事。

http://(スキーム)localhost(ホスト):8000(ポート) = オリジン

同じ端末(ブラウザ)で同じオリジンなら同じWebStorageが使える。

WebStorageの種類

sessionStorage

タブが閉じられるまで有効。
タブが複数でも異なるStorageになる。

keyとvalueで保存される。

メソッド

Method Description
sessionStorage.setItem(key, value) sessionStorageにデータを保存する。
sessionStorage.getItem(key) sessionStorageのデータを取得する。
sessionStorage.removeItem(key) sessionStorageのデータを削除する。
sessionStorage.clear() sessionStorageのデータを全件削除する。
sessionStorage.length sessionStorageのkey数を返す。

localStorage

ブラウザ自体にずっと保存。
複数タブでも有効。
(基本localStorageを使うのがベターです。)

Method Description
localStorage.setItem(key, value) localStorageにデータを保存する。
localStorage.getItem(key) localStorageのデータを取得する。
localStorage.removeItem(key) localStorageのデータを削除する。
localStorage.clear() localStorageのデータを全件削除する。
localStorage.length localStorageのkey数を返す。

オブジェクトを保存する

key, valueのvalueをオブジェクトにしたい事があるかと思います。
その際は、JSON.stringify(value)とJSON.parse(key)を使います。

setItem時

JSON.stringify(value)

getItem時

JSON.parse(key)

イベント

複数タブなどを開いている場合に、データの整合性を取るイベントがあります。
storageに何らかの変更があったらイベントをキャッチします。


  localStorage.setItem('name', 'jack');
  window.addEventListener('storage', (e) => {
    console.log(e.key); // key
    console.log(e.oldValue); //古い値
    console.log(e.newValue); //変更後の値
    console.log(e.storageArea); //変化があった時の、storageのデータ全体をオブジェクトで取得
    console.log(e.url); //オリジン
  });

終わり

WebStorageを使えば、簡単に端末(ブラウザ)毎にデータを残す事ができます。
てっとり早くデータを保存したい時や、ローカル端末にデータを残したい時などにはうってつけです。
セキュリティ的な観点では、もう少し調査が必要なので、次回はそちらの調査結果を書こうと思います。

101
81
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
101
81