EX DOM Storage の調査結果
前回の続き。
いろいろ試した結果です。
ブラウザを閉じてもsessionStrageのデータが消えない
不具合?
画面ロード時にsessionStrageが参照できない
画面ロード時、sessionStrageはsetTimeoutを使用しないと参照できない。0秒後でもOK。localStrageの場合は参照可。
setTimeout(function(){ var l = sessionStorage.length; },0)
exdomstorage.jsの参照パスは省略できない
NG
OK
setItem で上書きができない
キーが存在する場合は、事前に削除する必要がある。
検証プログラム
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script type="text/javascript" src="./exdomstorage.js"></script> <script> //var s='local'; var s='session'; var setVal = function(k,v){ if(v==undefined)return; if(s.getItem(k)!=undefined){ s.removeItem(k); } s.setItem(k,v); } var $=function(id){return document.getElementById(id);} var get=function(){ $('log').value=''; for(var i=0;i<s.length;i++){ log.value=log.value+'\n'+s.key(i)+' is '+s.getItem(s.key(i)); } } window.onload=function(){ if(s=='session')setTimeout(function(){s=sessionStorage;get()},0); else s=localStorage; } </script> </head> <body> <textarea id="log" rows="10"></textarea> <br/> key : <input id="key"/><br/> val : <input id="val"/><br/> <button onclick="setVal($('key').value,$('val').value);get()">set</button><br/><br/> <button onclick="s.clear();get()">clear</button> </body> </html>
ネタ元
Safari4 と IE8 で実装された DOM Storage とは何か
http://d.hatena.ne.jp/amachang/20080924/1222239494