而 localStorage 用於持久化的本地存儲,除非主動刪除數據,否則數據是永遠不會過期的。
web storage 和 cookie 的區別
Web Storage 的概念和 cookie 相似,區別是它是為了更大容量存儲設計的。 Cookie 的大小是受限的,並且每次你請求一個新的頁面的時候 Cookie 都會被發送過去,這樣無形中浪費了帶寬,另外 cookie 還需要指定作用域,不可以跨域調用。
除此之外,Web Storage 擁有 setItem , getItem , removeItem , clear 等方法,不像 cookie 需要前端開發者自己封裝 setCookie,getCookie。
但是 Cookie 也是不可以或缺的:Cookie 的作用是與服務器進行交互,作為 HTTP 規範的一部分而存在 ,而 Web Storage 僅僅是為了在本地 “存儲” 數據而生。
html5 web storage 的瀏覽器支持情況
瀏覽器的支持除了IE7及以下不支持外,其他標準瀏覽器都完全支持 (ie 及 FF 需在 web 服務器裡運行),值得一提的是 IE 總是辦好事,例如 IE7、IE6 中的 UserData 其實就是 javascript 本地存儲的解決方案。通過簡單的代碼封裝可以統一到所有的瀏覽器都支持 web storage。
要判斷瀏覽器是否支持localStorage可以使用下面的代碼:
if(window.localStorage){ alert("浏览支持localStorage") }else{ alert("浏览暂不支持localStorage") } //或者 if(typeof window.localStorage == 'undefined'){ alert("浏览暂不支持localStorage") }
localStorage 和 sessionStorage 操作
localStorage 和 sessionStorage 都具有相同的操作方法,例如 setItem 、 getItem 和 removeItem 等。
localStorage 和 sessionStorage 的方法
setItem 存儲 value
用途:將value存儲到key字段
用法:.setItem( key, value)
代碼示例:
sessionStorage.setItem("key", "value");
localStorage.setItem("site", "js8.in");
getItem 獲取 value
用途:獲取指定key本地存儲的值
用法:.getItem(key)
代碼示例:
var value = sessionStorage.getItem("key");
var site = localStorage.getItem("site");
removeItem刪除key
用途:刪除指定key本地存儲的值
用法:.removeItem(key)
代碼示例:
sessionStorage.removeItem("key");
localStorage.removeItem("site");
clear清除所有的key/value
用途:清除所有的key/value
用法:.clear()
代碼示例:
sessionStorage.clear();
localStorage.clear();
其他操作方法:點操作和[]
web Storage 不但可以用自身的 setItem, getItem 等方便存取,也可以像普通對像一樣用點(.)操作符,及 [] 的方式進行數據存儲,像如下的代碼:
var storage = window.localStorage;
storage.key1 = "hello";
storage["key2"] = "world";
console.log(storage.key1);
console.log(storage["key2"]);
localStorage 和 sessionStorage 的 key 和 length屬性實現遍歷
sessionStorage 和 localStorage 提供的 key() 和 length 可以方便的實現存儲的數據遍歷,例如下面的代碼:
var storage = window.localStorage;
for (var i=0, len = storage.length; i < len; i++){
var key = storage.key(i);
var value = storage.getItem(key);
console.log(key + "=" + value);
}
storage 事件
storage還 提供了 storage 事件,當鍵值改變或者 clear 的時候,就可以觸發 storage 事件,如下面的代碼就添加了一個 storage 事件改變的監聽:
if(window.addEventListener){
window.addEventListener("storage",handle_storage,false);
}else if(window.attachEvent){
window.attachEvent("onstorage",handle_storage);
}
function handle_storage(e){
if(!e){e=window.event;}
}
資料來源: https://js8.in/2011/10/18/html5%E7%9A%84sessionstorage%E5%92%8Clocalstorage/