【特集】
Web Storage/Web Databaseとは、クライアントサイドにデータを永続化するための仕組みで、オフラインWebアプリケーションを作成する上で非常に重要なテクノロジーだ。Web Storageはキー/バリュー型の単純なストレージ、Web Databaseは本格的なリレーショナルデータベースでありSQLを用いてストレージ操作を行うことができる。
Web Storageで取り扱うことのできる、キー/バリュー型のストレージには、以下の2種類がある。
これらのストレージにアクセスするには、「window.sessionStorage」もしくは単純に「sessionStorage」とすればよい。
両ストレージは、どちらも以下のプロパティ/メソッドを持つ。
また、getItem()やsetItem()は、ストレージに対するプロパティアクセスを行っても同様の処理を実現できる。
// localStorage.setItem("key1", "value1")と同様
localStorage.key1 = "value1";
// localStorage.getItem("key1")と同様
var v = localStorage.key1
以下のサンプルは、ローカルストレージに対して項目の追加と削除を行うことができる。
|
|
ローカルストレージのサンプル |
サンプルのソースコードを以下に示す。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript">
function load() {
var list = document.getElementById("list");
list.innerHTML = "";
// ローカルストレージに格納されているすべての値を列挙
for (var i = 0; i < localStorage.length; i++) {
var key = localStorage.key(i);
list.options[list.options.length] = new Option(localStorage[key], key);
}
}
function remove() {
var list = document.getElementById("list");
if (list.selectedIndex < 0) {
return;
}
var selected = list.options[list.selectedIndex].value;
// 選択された項目を削除
localStorage.removeItem(selected);
load();
}
function add() {
var key = document.getElementById("key").value;
var value = document.getElementById("value").value;
// ストレージに値を格納
localStorage[key] = value;
load();
}
</script>
</head>
<body onload="load()">
<h1>localStorageのサンプル</h1>
<select id="list" size="5" style="width: 100px"></select>
<button onclick="remove()">削除</button><br>
キー:<input type="text" id="key"><br>
値:<input type="text" id="value">
<button onclick="add()">追加</button><br>
</body>
</html>
localStorageを使用しているため、ブラウザを複数立ち上げてアクセスしても同じストレージ内のデータを読み書きできるし、ウィンドウを閉じて開き直してもデータは失われない。
このサンプルは、Firefox 3.5とSafari 4、そしてInternet Explorer 8での動作を確認した。ただし、Firefox 3.5でこのサンプルを試す場合は、何らかのWebサーバにアップロードしてアクセスしていただきたい(ローカルファイルを直接ブラウザで実行すると、リロードするたびにlocalStorageがクリアされてしまう)。
| マイナビ、3月より書籍連動型のクリエイティブ・デザイン系セミナー開講 [12:00 2/10] |
| Linux Mint 12 KDE登場 [10:26 2/10] |
| Dell、重複排除により最大98%のデータ削減が可能なバックアップストレージを発売 [09:44 2/10] |
| 北大、「ポジトロン断層撮影法」による脳腫瘍の性質を診断する手法を開発 [09:40 2/10] |
| NICTなど、手術支援ロボット「da Vinci」の3D裸眼映像伝送実証実験を計画 [09:36 2/10] |
|
松嶋菜々子登場に「ミタ」パパ・長谷川博己パニック - 鈴木京香との熱愛は? [12:03 2/10] エンタメ |
|
【コラム】奥様はコマガール 第31回 30代既婚男性たちの妻への本音 [12:00 2/10] ライフ |
|
マイナビ、3月より書籍連動型のクリエイティブ・デザイン系セミナー開講 [12:00 2/10] エンタープライズ |
|
【レポート】CP+2012 - ビジュアルのクオリティと新しいアクセス手段を追求 - ソニー [11:52 2/10] 家電 |
|
「SBIポイント」が「Suicaポイント」とポイント交換提携サービスを開始 [11:50 2/10] ライフ |