會話存儲sessionStorage


會話存儲的工作方式和本地存儲的工作方式很接近,不同之處在於數據是各個瀏覽器上下文私有的,會在文檔被關閉時移除(注意是被關閉時才移除,刷新是不會移除的)。我們通過全局sessionStorage訪問會話存儲,它返回一個Storage對象,該對象與本地存儲里的是一樣的。

sessionStorage案例1:

 1 <!doctype html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8">
 5     <title>sessionStorage</title>
 6     <style>
 7 
 8     </style>
 9 </head>
10 
11 <body>
12 <ul>
13     <li>key:<input id="key" type="text" value=""></li>
14     <li>value:<input id="value" type="text" value=""></li>
15     <li>
16         <input id="add" type="button" value="add">
17         <input id="clear" type="button" value="clear">
18     </li>
19     <li id="countmsg">There are <span id="count"></span> items</li>
20 </ul>
21 <table id="data"></table>
22 <script>
23     displayData();
24     document.getElementById('add').onclick=handleButtonPress;
25     document.getElementById('clear').onclick=handleButtonPress;
26     function handleButtonPress(e){
27         switch(e.target.id){
28             case 'add':
29                 var key=document.getElementById('key').value;
30                 var value=document.getElementById('value').value;
31                 sessionStorage.setItem(key,value);
32                 break;
33             case 'clear':
34                 sessionStorage.clear();
35         }
36         displayData();
37     }
38     function displayData(){
39         var tableItem=document.getElementById('data');
40         tableItem.innerHTML='';
41         var itemCount=sessionStorage.length;
42         document.getElementById('count').innerHTML=itemCount;
43         for(var i=0;i<itemCount;i++){
44             var key=sessionStorage.key(i);
45             var val=sessionStorage[key];
46             tableItem.innerHTML+='<tr><th>'+key+'</th><td>'+val+'</td></tr>';
47         }
48     }
49 </script>
50 </body>
51 </html>

這個案例的工作方式和本地存儲里的案例很接近,不同之處在與可見性和壽命受到限制(sessionStorage是臨時存儲)。這些限制會影響storage事件的處理方式,本地存儲里提到storage事件只會在其他同源文檔中觸發。對於會話存儲,這就意味着事件只會在內嵌文檔中觸發,比如iframe文檔,如下案例:

 1 <!doctype html>
 2 <html>
 3 <head>
 4     <meta charset="utf-8">
 5     <title>sessionStorage</title>
 6     <style>
 7 
 8     </style>
 9 </head>
10 
11 <body>
12 <ul>
13     <li>key:<input id="key" type="text" value=""></li>
14     <li>value:<input id="value" type="text" value=""></li>
15     <li>
16         <input id="add" type="button" value="add">
17         <input id="clear" type="button" value="clear">
18     </li>
19     <li id="countmsg">There are <span id="count"></span> items</li>
20 </ul>
21 <table id="data"></table>
22 <iframe src="./storage.html" width="500" height="175"></iframe>
23 <script>
24     displayData();
25     document.getElementById('add').onclick=handleButtonPress;
26     document.getElementById('clear').onclick=handleButtonPress;
27     function handleButtonPress(e){
28         switch(e.target.id){
29             case 'add':
30                 var key=document.getElementById('key').value;
31                 var value=document.getElementById('value').value;
32                 sessionStorage.setItem(key,value);
33                 break;
34             case 'clear':
35                 sessionStorage.clear();
36         }
37         displayData();
38     }
39     function displayData(){
40         var tableItem=document.getElementById('data');
41         tableItem.innerHTML='';
42         var itemCount=sessionStorage.length;
43         document.getElementById('count').innerHTML=itemCount;
44         for(var i=0;i<itemCount;i++){
45             var key=sessionStorage.key(i);
46             var val=sessionStorage[key];
47             tableItem.innerHTML+='<tr><th>'+key+'</th><td>'+val+'</td></tr>';
48         }
49     }
50 </script>
51 </body>
52 </html>

此案例中iframe引入的storage.html與本地存儲那里的storage.html代碼一模一樣,此處就不做說明。直接copy上面的代碼並在瀏覽器中運行可以查看到效果


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM