HTML5 引入了兩種機制,類似於 HTTP 的會話 cookies,用於在客戶端儲存結構化資料以及克服以下缺點。
每個 HTTP 請求中都包含 Cookies,從而導致傳輸相同的資料減緩我們的 Web 應用程式。
每個 HTTP 請求中都包含 Cookies,從而導致發送未加密的資料到互聯網上。
Cookies 只能儲存有限的 4KB 數據,不足以儲存所需的數據。
這兩種儲存方式是 session storage 和 local storage,它們將用於處理不同的情況。
幾乎所有最新版的瀏覽器都支援 HTML5 存儲,包括 IE 瀏覽器。
會話儲存
_會話儲存_被設計用於使用者執行單一事務的場景,但是同時可以在不同的視窗中執行多個事務。
範例
例如,如果使用者在同一網站的兩個不同的視窗中購買機票。如果該網站使用cookie 追蹤用戶購買的機票,當用戶在視窗中點擊頁面時,從一個視窗到另一個時當前已經購買的機票會“洩漏”,這可能導致用戶購買同一航班的兩張機票而沒有注意到。
HTML5 引入了sessionStorage 屬性,這個網站可以用來把資料加入會話儲存中,使用者仍然可以在開啟的持有該會話的視窗中存取同一網站的任意頁面,當關閉視窗時,會話也會丟失。
下面的程式碼將會設定一個會話變量,然後存取該變數:
本地存儲
_本地存儲_被設計用於跨多個窗口進行存儲,並持續處在當前會話上。尤其是,出於效能的原因 Web 應用程式可能希望在客戶端儲存百萬位元組的使用者數據,例如使用者撰寫的整個文件或使用者的郵箱。
Cookies 並不能很好的處理這種情況,因為每個請求都會傳送。
範例
HTML5 引入了 localStorage 屬性,可以用於存取頁面的本地儲存區域而沒有時間限制,無論何時我們使用這個頁面的時候本地儲存都是可用的。
下面的程式碼設定了一個本地儲存變量,每次造訪這個頁面時都可以存取該變量,甚至是下次開啟視窗時:
在本機上儲存敏感資料可能是危險的,可能會留下安全隱患。
_會話儲存資料_在會話終止之後將由瀏覽器立即刪除。
要清除本地儲存設定需要呼叫 localStorage.remove('key');這個 'key' 就是我們想要移除的值對應的鍵。如果想要清除所有設置,則需要呼叫 localStorage.clear() 方法。
XML/HTML Code複製內容到剪貼簿
核心方法
以下是規範中定義的三個核心方法。另一個故事在本教程中:
openDatabase:這個方法使用現有的資料庫或是新建的資料庫來建立一個資料庫物件。 transaction:這個方法讓我們能夠控制一個事務,以及基於這種情況執行提交或回滾。
executeSql :這個方法用來執行實際的SQL查詢。 開啟資料庫
使用下面的程式碼可以建立並開啟一個資料庫:
上面的方法接受下列五個參數:
資料庫名稱
版本號碼
描述文字
資料庫大小
建立回呼
最後也是第五個參數,建立回調會在建立資料庫後被呼叫。然而,即使沒有這個特性(功能),運行時仍然會建立資料庫以及正確的版本。
執行查詢
執行查詢需要使用 database.transaction() 函數。這個函數需要一個參數,它是一個負責實際執行查詢的函數,如下所示:
});
這裡的 e_id 和 e_log 是外部變量,executeSql 會映射數組參數中的每個條目給 "?"。
讀取操作
要讀取已經存在的記錄,我們可以使用回調來捕獲結果,如下所示:
Found rows: "
len len
已建立日誌訊息並插入一行。
'; document.querySelector(找到行: "
len >" results.rows.item(i).log "; document.querySelector(