MIS2000Lab.的「HTML5 認證考試, 從零開始 」#20 / 21 --- Session Storage & Local Storage(永久存放區)

摘要:MIS2000Lab.的「HTML5 認證考試, 從零開始」#20 / 21 --- Session Storage & Local Storage(永久存放區)





 

上一篇文章: MIS2000Lab.的「HTML5 認證考試,從零開始」#19 --- HTML5 Geolocation API ( 地理位置API )

 
 
前三篇文章簡單地分享了HTML5 API
 
這篇文章要分享的是離線存取(offline access)
 
 
 

本文內容,將會在2014年底,碁峰出版社推出的HTML5新書裡面

不好意思,因為內容將會出書,所以目前公開的東西都經過大量簡化
日後出書的話,針對每一個方法、屬性都會仔細解說
 
 
 
HTTP協定(Protocol)是一個「沒有狀態(Stateless)」的協定,
但仍可以透過一些網頁與Web Server的狀態管理來做。
 
傳統的cookies或是HTML5的Session Storage API、Local Storage API等等都可以做到類似的功能。
 
 
==== 使用cookies維持Session的狀態資訊 ====
 
 
當我連上一個Web網站並讀取一個網頁(專業術語:Client端對Web Server發出一個要求,Request),
只要Web Server把網頁的HTML內容完全傳遞給我的瀏覽器之後
(專業術語:Web Server給Client端一個回應,Response),Web Server跟我的電腦就斷線了(off-line)。
 
不信的話,當您的瀏覽器完全取得HTML資料後,您把網路線移除,
 
檢查一下瀏覽器上的畫面、文字與圖片應該都在,是不是?
 
 
Cookies可以暫存在使用者的周邊、瀏覽器上面,給Web Server識別您的身份。
舉例來說,當我連上一個網站之後,隔天再度連上線變不需要輸入帳號與密碼,也可以直接登入。
 
以IE瀏覽器為例,cookies最多只能存放4KB的資料量(無法存放大量數據),或是4KB以內最多20組的數值。
有些網站在無意間可能”共用”不同網站給予的cookies而造成私密資料的曝光,
 
現在的瀏覽器都有頁籤(Tab)功能可以在一個瀏覽器內同時開啟多個網頁,也可能造成共用Cookies的情況。
 
因此Cookies檔案 "可能" 會被濫用、破解而導致私人訊息的外洩。
 
 
由於應用程式處理離線行為(例如在電腦上暫時存放資料以便稍後傳回Web Server)的機會越來越多,
 
因此這類資訊「無意間被洩漏、誤用」的情況就更為普遍。
 
 
 
==== 使用Session Storage(暫時存放區) ====
 
Session storage是一種(Client端)瀏覽器上面的持久機制
用來存放 “字串”資料,直到時限過期為止。
 
或是當使用者關閉瀏覽器的時候也會消失。
 
如果您有其他資料型態,例如:數字、布林(boolean)等等,請先轉換成「字串」才能放到這些儲存區裡面。
if( window.sessionStorage ){  
...  
}  
  
註解:為了方便使用,Session storage可以直接在程式裡面呼叫,不需要在前面加上window物件,例如:window.sessionStorage。

 

注意!Session storage是「暫存性的資料」有儲存期限的限制,或是使用者的瀏覽器一關閉就會消失了。
如果您希望這些資料存放更久,後續的Local storage會符合您的需求,但作法都雷同。

 
==== JSON與Session Storage ====
 
 
您也可以把Session storage(或Local sotrage)資料轉換成JSON字串,
 
或是透過JSON.stringify()將這些objects資料序列化(serialize)成JSON字串之後,留待後續使用。
 
  1. var listDiv = document.getElementById("myList");  
  2. // HTML畫面上有一個名為myList的<div>標籤。  
  3.   
  4. for(var i=0; i<sessionStorage.length; i++)  
  5. {  
  6. listDiv.innerHTML += "<br />" + sessionStorage.key(i);  
  7. }  
 

 

 

===============================================================

Local Storage

===============================================================

本文內容,將會在2014年底,碁峰出版社推出的HTML5新書裡面

不好意思,因為內容將會出書,所以目前公開的東西都經過大量簡化
日後出書的話,針對每一個方法、屬性都會仔細解說
 
 
前面介紹的Session storage是「暫存性的資料」,
而Local storage則沒有期限的限制、或是瀏覽器被關閉以後仍會存在(存放在Client端的檔案系統內)。
 
當然,可以在瀏覽器裡面設定是否要移除這些資訊,或是關閉瀏覽器的同時就立即清除這些資訊。
 
”不同網站”產生的Local storage是”無法”共用的!
 
您可以透過以下的JavaScript測試一下您正在使用的瀏覽器是否支援local storage功能:
if( window.localStorage ){  
...  
}  

 

註解:為了方便使用,Local storage可以直接在程式裡面呼叫,不需要在前面加上window物件,例如:window.localStorage。

//註解:myKey就是自己定義的key值。  
  
方法一:  
localStorage.setItem("myKey","即將儲存的資訊文字");  
var textData = localStorage.getItem("myKey");  
  
方法二:  
localStorage["myKey"] = "即將儲存的資訊文字";  
var textData = localStorage["myKey"];  
  
方法三:  
localStorage.myKey = "即將儲存的資訊文字";  
var textData = localStorage.myKey;  

 

跟上面文章的範例完全相同,
只是把Session Storage改成 Local Storage
 
您就可以看見「執行成果」的變化...從範例裡面學習、直接看成果,一目了然!
 

 

 
==== 屬性與方法 ====
 
Session storage與Local storage都支援下列屬性和方法。
 
  • .clear()方法 從 Web存放區移除所有key值組。
  • constructor 將參照傳回物件建構函式。
  • .getItem()方法 擷取(讀取)與 Web存放區裡面索引鍵關聯的目前值。
  • key()方法 抓取集合中指定索引的索引鍵。
  • length 抓取key值清單的長度。
  • remainingSpace 抓取儲存物件的剩餘記憶體空間(單位:位元組)。
  • .removeItem()方法 從 Web存放區集合刪除key值組。
  • .setItem()方法 設定(寫入)key值組。
 
 
==== 處理Storage事件 ====
 
storage API有session與local storage兩者。
 
您可以透過這個事件提示網頁,在儲存區裡面的資料已經被異動了。當資料被修改時就會觸發這個事件。程式碼的範例如下:
function myStorageCallback( e ) {  
  alert("原本的Key值:" + e.key + ",內容已經改成:" + e.newValue);  
}  
  
window.addEventListener("storage", myStorageCallback, true);

 

從事件物件傳給事件處理器,共有屬性如下:
  •  key:
  •  oldValue:改變以前的(舊)數值。
  •  newValue:將要改變的(新)數值。
  •  url:script程式碼。
  •  storageArea:storage將使用session或是local。
 
 
 
不要走開,馬上回來
 
下一篇文章:Indexed Database API
 
 
 
 

本文內容,將會在2014年底,碁峰出版社推出的HTML5新書裡面

不好意思,因為內容將會出書,所以目前公開的東西都經過大量簡化
日後出書的話,針對每一個方法、屬性都會仔細解說
 
 
HTML5、CSS、JavaScript 網頁程式設計與 MCSD 70-480 認證教材
9789863475750

HTML5、CSS、JavaScript 網頁程式設計與 MCSD 70-480 認證教材

MIS2000 Lab. 周棟祥/吳進魯

  • 出版商:碁峰
  • 出版日期:2015-04-09
  • 台幣定價:
  • $480
  • 售價:7.9 折 $379
  • 語言:繁體中文
  • ISBN:9863475750
  • ISBN-13:9789863475750

 

 

 

 

**********************************************************************************************************************

我要買書:

PChome  http://24h.pchome.com.tw/books/prod/DJAV0S-A90060ASI

博客來  http://www.books.com.tw/products/0010671214

天瓏書局  https://www.tenlong.com.tw/items/9863475750?item_id=1003110

 

 

 

 

我將思想傳授他人, 他人之所得,亦無損於我之所有;

猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。----Thomas Jefferson

線上課程,遠距教學 (Web Form 49hr)  https://dotblogs.com.tw/mis2000lab/2016/02/01/aspnet_online_learning_distance_education_VS2015

線上課程,遠距教學 (ASP.NET MVC 75hr)  https://dotblogs.com.tw/mis2000lab/2018/08/14/ASPnet_MVC_Online_Learning_MIS2000Lab

ASP.NET MVC線上課程 第一天 免費看 (5.5小時) 

寫信給我,不要私訊 --  mis2000lab (at) yahoo.com.台灣  或  school (at) mis2000lab.net


ASP.NET遠距教學、線上課程(Web Form + MVC)。 第一天課程, "完整" 試聽。 

................   facebook社團   https://www.facebook.com/mis2000lab   ......................

................  YouTube (ASP.NET) 線上教學影片  https://www.youtube.com/channel/UC6IPPf6tvsNG8zX3u1LddvA/

 

Blog文章 "附的範例" 無法下載,請看 這裡 ...... https://dotblogs.com.tw/mis2000lab/2016/03/14/2008_2015_mis2000lab_sample_download

請看我們的「售後服務」範圍(嚴格認定)

......................................................................................................................................................

...................................................................................................................................................... 

[遠距教學、教學影片] ASP.NET (Web Form) 課程 上線了!MIS2000Lab.主講

事先錄製好的影片,並非上課時側錄!   觀看影片時,有如我「一對一」跟您面對面講課

 

ASP.NET MVC 5 線上教學

累積時數約 75小時...... 第一天(5.5小時)完整內容,"免費"讓您評估