ã¯ããã«
çæ§ JavaScript ã®ã¹ãã¼ãç«¶äºãæ¿åãã ECMAScript 3.1 ã®ä»æ§ã®çå®ãé²ããªã©ãæ¿åã® JavaScript æä»£ãããããéããã§ããããã
ãã¦ä»æ¥ã¯ãä»ãã¡ã¾ãã§å¤§ãã¬ã¤ã¯ã®å
ããè¦ãã¦ãã DOM Storage ã¨ãã仿§ãç´¹ä»ãããã¨æãã¾ãã
DOM Storage ã¨ã¯ä½ã
ã¾ãã DOM Storage ã¨ã¯ã©ããªãã®ãªã®ã§ããããã
ã¨ã¦ãç°¡åã«è¨ã£ã¦ãã¾ãã°ãã¨ã¦ãããããã®ãã¼ã¿ãä¿åã§ãã¦ãµã¼ãã¼ã«èªåã§éãããªã Cookie ã¿ãããªãã®ã§ãã
ããã«ã Cookie ã¨ã¯éã£ã¦ JavaScript ããã¨ã¦ãæ±ãæãä½ããã¦ãã¾ãã
ã§ã¯ããã® DOMStorage ã®å
·ä½çãªã½ã¼ã¹ã³ã¼ããè¦ã¦ã¿ã¾ãããã
<!DOCTYPE html> <html> <head><title>DOMStorage ã®ä½¿ãæ¹</title></head> <body><script> // DOM Storage 㯠localStorage ã¨ãããªãã¸ã§ã¯ããçµç±ãã¦ã¢ã¯ã»ã¹ããã¾ãã if (!localStorage.name) { // ä½¿ãæ¹ã¯ãã ä»£å ¥ããã ã localStorage.name = prompt('åãã¾ãã¦ï¼ï¼ ååãæãã¦ãã ãã') } // ç°¡åã«ãã¼ã¿ãåãåºãã¾ã document.write(localStorage.name + 'ããããã«ã¡ã¯ï¼'); </script></body> </html>
ãã£ã 4 è¡ã§ãã
ãã® HTML ã DOM Storage ã«å¯¾å¿ãã¦ãããã©ã¦ã¶ã§è¦ãã¨ãæåã®ä¸åã ãååãèããã¦ä»¥éã¯èãããªãã¨ããæåããã¾ãã
サンプルはこちら
ç°¡åã§ããï¼
ããåãããªãï¼ï¼
ããå°ã説æãã¾ãã
å½ããåã®ãã¨ã§ãããæ®éã® JavaScript ã®ãªãã¸ã§ã¯ãã£ã¦ãã¼ã¸é·ç§»ããã¨å¤ã失ãã¾ãããã
object.count = object.count || 0;
object.count++;
alert(object.count);
ã§ãã localStorage ã¨ãããªãã¸ã§ã¯ãã®ããããã£ã«å¤ãä»£å ¥ãã¦ããã¨ããã¼ã¸é·ç§»å¾ã§ãå¤ãä¿åãããã¾ã¾ã«ãªãã®ã§ãã
localStorage.count = localStorage.count || 0; localStorage.count = parseInt(localStorage) + 1; // localStorage ã«ã¯æååã¨ãã¦ä¿åãããã®ã§ã parseInt ãå¿ è¦ alert(localStorage.count);
ããã DOM Storage ã§ãã
ãªãã¸ã§ã¯ãã¨ããã¶ã¡è¾¼ããã®ï¼
ã¶ã¡è¾¼ãããã¨ã¯ã¶ã¡è¾¼ããã®ã§ããããã¼ã¿ã¯ãã¹ã¦æåååããã¦ä¿åããã¾ãã
ã¤ã¾ãã"[object Object]" ã¨ãããããªæååãä¿åãããããã¾ãã
å ·ä½çã«ã¯ã©ãå¬ããã®ï¼
ä»ã¾ã§ã® Web ã¢ããªã±ã¼ã·ã§ã³ã§ã¯ãã¯ã©ã¤ã¢ã³ããã¼ã¿ã®ä¿åã¯ã»ã¨ãã©ãµã¼ããµã¤ãã§è¡ããã¦ãã¾ããã
DOM Storage ã使ãã¨ããã¼ã«ã«ã®ãã¼ã¿ã¯ãã¼ã«ã«ã«ä¿åããã¨ããå½ããåã®ãã¨ãåºæ¥ãããã«ãªãã¾ãã
使ããæ¹ã¨ãã¦ã¯ã
- è¨å®ãç¶æ ã®ä¿å
- 大ããªãã¼ã¿ã®ä¸æçãªä¿å
- HTML ã JSON ãªã©ã®ãã£ãã·ã¥
ã¡ãªããã¨ãã¦ã¯
- ãµã¼ãè³æºã®ç¯ç´
- ããã©ã¼ãã³ã¹ã®æ¹å
ãªã©ãããããã¾ãã
ã©ã®ãã©ã¦ã¶ã§ä½¿ããã®ï¼
DOM Storage ã¯ä»¥ä¸ã®ãã©ã¦ã¶ã§ä½¿ããã¨ãã§ãã¾ãã
- IE8+
- Safari4+
- Firefox2+
æ°ãããã©ã¦ã¶ã§ã¯ãè»ä¸¦ã¿ä½¿ããããã«ãªãäºå®ã§ãã®ã§ãå½ç¶ Opera ã§ã対å¿ãã¦ãããã¨ã«ãªãã¨æãã¾ãã
æ°ãã仿§ã¨å¤ã仿§
ãã ä¸ã¤ã注æããç¹ã¯ DOM Storage ã«ã¯å¤ã仿§ã¨æ°ãã仿§ããã£ã¦ã
- å¤ã仿§ãå®è£
ãã¦ãããã©ã¦ã¶
- Firefox2
- Firefox3
- æ°ãã仿§ãå®è£
ãã¦ãããã©ã¦ã¶
- Safari4
- IE8
ã¨ãªã£ã¦ãã¾ãã
ä¸çªæåã«æ¸ããä¾ã¯ãæ°ãã仿§ã§ã®æ¸ãæ¹ãªã®ã§ãå®éã«ã¯å¤ã仿§ã§ãåãããã«æ¹é ããå¿
è¦ãããã¾ãã
æ¹é ã¨è¨ã£ã¦ãåç´ã§ã
<!DOCTYPE html> <html> <head><title>DOM Storage ã®ä½¿ãæ¹</title></head> <body><script> // *** ãã® 1 è¡ã追å ããã ã window.localStorage = window.localStorage || window.globalStorage[location.hostname]; // *** ãã® 1 è¡ã追å ããã ã if (!localStorage.name) { localStorage.name = prompt('åãã¾ãã¦ï¼ï¼ ååãæãã¦ãã ãã') } document.write(localStorage.name + 'ããããã«ã¡ã¯ï¼'); </script></body> </html>
ä¸ã®ä¾ã®ããã« 1 è¡ã追å ããã ãã§ãã
å ·ä½çã«ä¿åã§ãã容éã¯ï¼
容éã¯ä»æ§ã«ã¯å®ç¾©ããã¦ãã¾ããããä¾ãã° IE8 ã§ã¯ 10 MB ã®å¤§å®¹éãæ±ããã¨ãã§ãã¾ãã
Safari4 ã Firefox ã®å®¹éãç¥ã£ã¦ãã人ãããã°æãã¦ãã ããï¼ï¼
仿§ã®å ¨è²
ãã® DOM Storage ã¨ãããã®ã®ä»æ§ã¯ HTML5 ã¨ãã仿§ã®ä¸é¨ã§ãStructured client-side storageã¨ããç« ã§å®ç¾©ããã¦ãã¾ãã
localStorage 㨠sessionStorage
ããã¾ã§ã localStorage ããç´¹ä»ãã¦ãã¾ããã§ãããã DOM Storage ã«ã¯ä»¥ä¸ã®äºã¤ã®ãªãã¸ã§ã¯ããããã¾ãã
- localStorage
- sessionStorage
localStorage ã¯ãã©ã¦ã¶ãè½ã¨ãã¦ãããã¼ã¿ãæ®ããªãã¸ã§ã¯ãã§ã sessionStorage ã¯ãã®ã¿ãï¼ã¦ã£ã³ãã¦ï¼ãèµ·åãã¦ããéã ããã¼ã¿ãä¿æãã¾ãã
ãã¼ã¿ã®è¿½å ãæ¸ãæã
ããã¾ã§ã®ä¾ã§ã¯ãä»£å ¥ã«ãããã¼ã¿ã®è¿½å æ¹æ³ã ããç´¹ä»ãã¦ãã¾ãããã setItem 颿°ã«ãããã¼ã¿ã®è¿½å æ¹æ³ãããã¾ãã
localStorage.setItem('hoge', 'fuga'); // localStorage.hoge = 'fuga'; ã¨åãæå³ sessionStorage.setItem('hoge', 'fuga'); // sessionStorage.hoge = 'fuga'; ã¨åãæå³
ãã¼ã¿ã®åç §
ãã¼ã¿ã®åç §æ¹æ³ã¯ããããã£ã¨ãã¦ã®åç §æ¹æ³ä»¥å¤ã«ã getItem 颿°ã«ããåç §æ¹æ³ãããã¾ãã
alert(localStorage.getItem('hoge')); // alert(localStorage.hoge); ã¨åãæå³ alert(sessionStorage.getItem('hoge')); // alert(sessionStorage.hoge); ã¨åãæå³
ãã¼ã¿ã®åé¤
ãã¼ã¿ã®å餿¹æ³ã¯ delete æ¼ç®åãã¾ãã¯ã removeItem ã使ãã¾ãã
delete localStorage.hoge; localStorage.removeItem('hoge');
ãã¼ã¿ã®åæ
ä¿åããããã¼ã¿ã®åææ¹æ³ã¯ã length ããããã£ã¨ãkey 颿°ã使ãã¾ãã
for (var i = 0; i < localStorage.length; i ++) { var key = localStorage.key(i); var data = localStorage.getItem(key); }
length ããããã£ã¯ä¿åããããã¼ã¿ã®åæ°ã表ãã key 颿°ã¯æ°å¤ãåãåããã¼ã¿ã®ããããã£åï¼ãã¼ï¼ãè¿ãã¾ãã
ãã¼ã¿ãå ±æãããç¯å²
ãã¼ã¿ã¯åã origin ï¼ãããã³ã« + ãã¡ã¤ã³ + ãã¼ãï¼ã§å
±æããã¾ãã
ä¾ãã°ã
- https://example.org/hoge 㨠http://example.org/hoge ã§ã¯å ±æããã¾ããã
- http://example.org:80/hoge 㨠http://example.org/fuga ã§ã¯å ±æããã¾ãã
- http://www.example.org/hoge 㨠http://example.org/hoge ã§ã¯å ±æããã¾ããã
storage ã¤ãã³ã
DOM Storage ã¯åããã¡ã¤ã³ãªãè¤æ°ã®ããã¥ã¡ã³ãéã§å
±æã§ããã®ã便å©ã§ãããå¥ã®ãã¼ã¸ããçªå¦æ¸ãæãããã¦ãã¾ãå¯è½æ§ãããã¾ãã
ãã®ãããªå ´åãç´°ããå¶å¾¡ããããã«ã storage ã¤ãã³ãã¨ãããã®ãåå¨ãã¾ãã
ä½¿ãæ¹ã¯ã以ä¸ã®ããã«ãªãã¾ãã
document.onstorage = function(e) { e = e || envet; // for IE if (e.window != window) { alert( 'å¥ã®ããã¥ã¡ã³ãã«ãã£ã¦' + e.key + 'ã' + e.oldValue + 'ãã' + e.newValue + 'ã«æ¸ãæãããã¾ããï¼'); } };
ä¸ã®ä¾ã®ããã«ã¤ãã³ããªãã¸ã§ã¯ã e ã®
- e.window ã«ã¯ãæ¸ãæããããã¥ã¡ã³ãã® window ãªãã¸ã§ã¯ããã
- e.key ã«ã¯ã追å ãããã¼ã¿ã®ããããã£åï¼ãã¼ï¼ãã
- e.oldValue ã«ã¯ãæ¸ãæããããåã®ãã¼ã¿ãã
- e.newValue ã«ã¯ãæ¸ãæããããå¾ã®ãã¼ã¿ãã
å ¥ã£ã¦ãã¾ãã
ã§ã IE6, IE7 ã¦ã¼ã¶ã¼ãã»ã»ã»ãããªããªãã«
ãä¸çªã¦ã¼ã¶ãå¤ããã©ã¦ã¶ï¼IE6 㨠IE7ï¼ã§ä½¿ããªãããããããã便å©ãªãã®ã¨ã¯è¨ã使ããªããï¼ï¼ãã¨ããã®ã¯ãã£ã¨ãã ã¨æãã¾ãã
ã§ããããã§è«¦ããå¿
è¦ã¯ããã¾ããã IE ç¬èªã®æ©è½ã使ã£ã¦ãIE6, IE7 ã§ã DOM Storage ã使ããããã«ãªã£ã¦ãã¾ã夢ã®ãããªã©ã¤ãã©ãªãEx DOM Storageãã仿¥ãªãªã¼ã¹ããã¾ããã
ããã§ãæãåå DOM Storage ã使ãåããã¨ãã§ãã¾ããç´ æ´ãããï¼
ç°¡åãªä½¿ãæ¹
以ä¸ã®ããã«ã script ã¿ã°ãèªã¿è¾¼ãã§ããã ãã§ãï¼ç°¡åï¼
<html><head> <title>hoge</title> <script src="http://svn.coderepos.org/share/lang/javascript/exdomstorage/trunk/src/exdomstorage.js"></script> </head> <body>...</body> </html>
ãã ããèªåã®ãµã¼ãã¼ã«ç½®ãã¨ãã¯ããã® js ãã¡ã¤ã«ä»¥å¤ã«ã以ä¸ã®ãªã³ã¯å
ã«ãããã¡ã¤ã«ããã¹ã¦ç½®ãã¦ãé©å㪠mime-type ãè¨å®ããªããã°ãªãã¾ããã
http://svn.coderepos.org/share/lang/javascript/exdomstorage/trunk/src/
ããã«è©³ç´°ãªæ å ±ã¯
ä½è æ§ã®ãã¼ã¸ãã©ãã
ã¾ã¨ã
- IE8 ã Safari4 ããã¯ã DOM Storage ã使ããããã«ãªãã
- Firefox ã§ã¯å¤ã仿§ã ããç°¡åã«æ°ãã仿§ã¨åãããã«ä½¿ããã¨ãã§ããã
- IE6 ã IE7 ã§ DOM Storage ã使ããããã«ããããã®ã©ã¤ãã©ãªããªãªã¼ã¹ãããã
ã¨ãã訳ã§ã DOM Storage ã¯æªæ¥ã®æè¡ãããç¾å¨ä½¿ããæè¡ã¸ã¨å§¿ãå¤ãã¾ãããçæ§ã DOM Storage ã使ã£ã¦ãã¯ã©ã¤ã¢ã³ããµã¤ãã®ãã¯ã¼ããã«ã«ãããã Web ã¢ããªã±ã¼ã·ã§ã³ãä½ã£ã¦ã¿ã¦ã¯ãããã§ããããã