localStorage是本地存儲的,除非清空本地數據
localStorage不會自動把數據發給服務器,僅在本地保存。html
localStorage只能存字符串,任何類型存儲的時候都會被自動轉換成字符串web
使用方式(localStorage是window的屬性)sql
設置localStorage鍵值對數據庫
localStorage.name = 'zhangsan';//存儲一個鍵值對跨域
localStorage.name = 'lisi';//name新值會覆蓋舊值瀏覽器
localStorage['年齡'] = 23;//key是中文就使用這種方式服務器
localStorage['404'] = '你迷路了';//key是數字就用這種方式cookie
localStorage.setItem('email','chentging@aliyun.com');//使用setItem函數建立一個鍵值對session
根據localStorge鍵取用值異步
console.log(localStorage.name);
console.log(localStorage['年齡']);
console.log(localStorage['404']);
console.log(localStorage.getItem('name'));
//經過key()函數獲取鍵值對中的key
console.log(localStorage.key(index));
清除localStorage
//清除特定的鍵值對
console.log(localStorage.removeItem('name'));//清除name的值
//清除全部鍵值對
localStorage.clear();
sessionStorage只伴隨着session,窗口一旦關閉就沒了
sessionStorage不會自動把數據發給服務器,僅在本地保存。
sessionStorage不在不一樣的瀏覽器窗口中共享,即便是同一個頁面
localStorage只能存字符串,任何類型存儲的時候都會被自動轉換成字符串
使用方式(localStorage是window的屬性)
設置,取值,清除都和localStorage徹底同樣
簡介
Web SQL DatabaseAPI實際上未包含在HTML 5規範之中,它是一個獨立的規範,它引入了一套使用SQL操做客戶端數據庫的API,這些API有同步的,也有異步的,同步版本的API只在工做線程(Worker Threads)上有用,因爲並非全部的瀏覽器都支持工做線程,通常狀況下,都會使用異步API。它的核心方法有三個:openDatabase,transaction和executeSql。這些API已經被普遍的實如今了不一樣的瀏覽器裏,尤爲是手機端瀏覽器。雖然W3C官方在2011年11月聲明已經再也不維護Web SQL Database規範,但因爲其普遍的實現程度,瞭解這些API對 Web開發仍是很是有必要的
openDatabase()方法打開一個已經存在的數據庫鏈接,若是數據庫不存在,則建立一個新的數數據庫
var db = openDatabase('mydb','1.0','my database',1024*1024);
4個參數的意義(數據庫名、版本號、數據庫說明、數據庫大小單位byte(數據庫大小可變)、建立回滾)
注意:若是數據庫已經建立,第五個參數將會進行回滾操做。若是省略此參數,仍能建立執行錯誤的函數也有兩個:tt,事務性參數,error,錯誤的對象
實例: var db = openDatabase('mydb','1.0','my database',1024*1024); if (db) {} //能夠判斷是否成功鏈接上數據庫 db.transaction(function(tx) { //建立一個表 tx.executeSql('create table if not exists accountTab(name TEXT,age INTEGER,email TEXT)',[], function() {}, function(tx,error) { console.log(error.source + ':' +error.message);//遇到錯誤打印出錯誤信息 }); //插入數據 tx.executeSql('insert into accountTab values(?,?,?)',['zhangsan',23,'chentging@aliyun.com']); //查詢數據 tx.executeSql('select * from accountTab',[],function(tt,rs) { //循環結果集 for(var i = 0; i < rs.rows.length;i++) { console.log(rs.rows);//輸出結果集 } }); });
cookie只在設置的cookie過時時間以前一直有效,即便窗口或瀏覽器關閉
cookie數據始終在同源的http請求中攜帶(即便不須要),即cookie在瀏覽器和服務器間來回傳遞
cookie數據還有路徑(path)的概念,能夠限制cookie只屬於某個路徑下
存儲大小限制也不一樣,cookie數據不能超過4k,同時由於每次http請求都會攜帶cookie,因此cookie只適合保存很小的數據
localStorage:始終有效,窗口或標籤頁關閉也一直保存(除非主動刪除數據),所以用做持久數據
sessionStorage每一個窗口的值都是獨立的(每一個窗口都有本身的數據),它的數據會隨着窗口的關閉而消失,窗口間的sessionStorage也是不能夠共享的(就是,你再打開一個標籤頁,一樣的地址,也不會共享)
localStorage 在全部同源頁面中都是共享的(前提是相同瀏覽器,別一個是谷歌瀏覽器,一個火狐瀏覽器,而後打開同一個頁面說不是共享的哈哈)也就是能跨頁不能跨域
cookie的封裝,我推薦你們使用cookie相關的插件(固然有時間也能夠本身封裝,網上也不少)
http://www.cnblogs.com/jicheng/p/5946460.html
http://www.cnblogs.com/kissdodog/archive/2012/12/14/2818827.html
當程序修改localStorage與sessionStorage時將觸發全局事件。
當setItem(),removeItem()或者clear() 方法被調用,而且數據真的發生了改變時,就會觸發storage事件,若是須要進行監聽數據處理,經過如下方法:
window.addEventListener(event,handleEvent, capture)
event:設置成storage
handleEvent:事件處理函數
capture:事件處理順序,通常設置成false,表示採用冒泡方式處理
handleEvent處理事件的函數會接收到一個StorageEvent對象,該對象有如下屬性:
key:被修改的鍵。
oldValue:修改前的值(若是是增長新的鍵值,則該屬性爲null)
newValue:修改後的值(若是是刪除鍵值,則該屬性爲null)
url/uri:觸發當前存儲事件的頁面的url
注意:storage改變的時候,觸發這個事件會調用全部同域下其餘窗口的storage事件,不過它自己觸發storage即當前窗口是不會觸發這個事件的(固然ie這個特例除外,它包含本身本事也會觸發storage事件)