1. 程式人生 > >HTML5 本地儲存 localStorage、sessionStorage 的遍歷、儲存大小限制處理

HTML5 本地儲存 localStorage、sessionStorage 的遍歷、儲存大小限制處理

HTML5 的本地儲存 API 中的 localStorage 與 sessionStorage 在使用方法上是相同的,區別在於 sessionStorage 在關閉頁面後即被清空,而 localStorage 則會一直儲存。我們這裡以 localStorage 為例,簡要介紹下 HTML5 的本地儲存,並針對如遍歷等常見問題作一些示例說明。 localStorage 是 HTML5 本地儲存的 API,使用鍵值對的方式進行存取資料,存取的資料只能是字串。不同瀏覽器對該 API 支援情況有所差異,如使用方法、最大儲存空間等。

1. localStorage API 基本使用方法

localStorage API 使用方法簡單易懂,如下為常見的 API 操作及示例: 設定資料:localStorage.setItem(key,value); 示例:

for(var i=0; i<10; i++){
	localStorage.setItem(i,i);
}

獲取資料:localStorage.getItem(key) 獲取全部資料:localStorage.valueOf() 示例:

for(var i=0; i<10; i++){
	localStorage.getItem(i);
}

刪除資料:localStorage.removeItem(key) 示例:

for(var i=0; i<5; i++){
	localStorage.removeItem(i);
}

清空全部資料:localStorage.clear() 獲取本地儲存資料數量:localStorage.length 獲取第 N 個數據的 key 鍵值:localStorage.key(N)

2. 遍歷 key 鍵值方法

for(var i=localStorage.length - 1 ; i >=0; i--){
	console.log('第'+ (i+1) +'條資料的鍵值為:' + localStorage.key(i) +',資料為:' + localStorage.getItem(localStorage.key(i)));
}

3. 儲存大小限制測試及異常處理

3.1 資料儲存大小限制測試

不同瀏覽器對 HTML5 的本地儲存大小基本均有限制,一個測試的結果如下:

IE 9          > 4999995 + 5 = 5000000
firefox 22.0 > 5242875 + 5 = 5242880
chrome  28.0  > 2621435 + 5 = 2621440
safari  5.1   > 2621435 + 5 = 2621440
opera   12.15 > 5M (超出則會彈出允許請求更多空間的對話方塊)

測試程式碼參考:

<!DOCTYPE html>
<html>
<head>
<script>
	function log( msg ) {
	    console.log(msg);
	    alert(msg);
	}

	var limit;

	var half = '1'; //這裡會換成中文再跑一遍
	var str = half;
	var sstr;

	while ( 1 ) {
	    try {
	        localStorage.clear();
	        str += half;
	        localStorage.setItem( 'cache', str );
	        half = str;
	    } catch ( ex ) {
	        break;
	    }
	}

	var base = str.length;
	var off = base / 2;
	var isLeft = 1;

	while ( off ) {
	    if ( isLeft ) {
	        end = base - (off / 2);
	    } else {
	        end = base + (off / 2);
	    }

	    sstr = str.slice( 0, end );
	    localStorage.clear();
	    try {
	        localStorage.setItem( 'cache', sstr );
	        limit = sstr.length;
	        isLeft = 0;
	    } catch ( e ) {
	        isLeft = 1;
	    }

	    base = end;
	    off = Math.floor( off / 2 );
	}

	log( 'limit: ' + limit );

</script>
</html>

3.2 資料儲存異常處理

try{
	localStorage.setItem(key,value);
}catch(oException){
	if(oException.name == 'QuotaExceededError'){
		console.log('超出本地儲存限額!');
		//如果歷史資訊不重要了,可清空後再設定
		localStorage.clear();
		localStorage.setItem(key,value);
	}

}

長按圖片識別圖中二維碼(或搜尋微信公眾號FrontEndStory)關注“前端那些事兒”,帶你探索前端的奧祕。

相關推薦

go語言初體驗(流程控制range函式結構體面向物件)

一、流程控制 // main package main import ( "fmt" ) func main() { x := 2 switch x { case 1: fmt.Print("beifeng 1") case 2:

go語言初體驗(流程控制range函數結構體面向對象)

需要 3.3 fmt float compute 捕獲異常 value 地址 異常處理 一、流程控制 // main package main import ( "fmt" ) func main() { x := 2 switch x {

Go語言基礎(九)—— Go語言結構體Go語言切片(Slice)rangeGo語言Map(集合)

Go語言結構體 Go 語言中陣列可以儲存同一型別的資料,但在結構體中我們可以為不同項定義不同的資料型別。 結構體是由一系列具有相同型別或不同型別的資料構成的資料集合。  結構體表示一項記錄,比如儲存圖書館的書籍記錄,每本書有以下屬性: Title :標題&nbs

二叉樹的建立及(先序中序後續層次

資料結構學過有一段時間了,太長時間沒有寫程式碼,基本上都忘個差不多了,最近用到了,今天重新複習了一下,寫個二叉樹小彙總 注:我這裡節點是字元型別,所以如果節點要是儲存大於9的數字的值的話,需要將其改一下,部分功能程式碼也要隨之改變,但是隻要思想弄懂了,那麼無論改成什麼樣的

HTML5 本地儲存 localStoragesessionStorage儲存大小限制處理

HTML5 的本地儲存 API 中的 localStorage 與 sessionStorage 在使用方法上是相同的,區別在於 sessionStorage 在關閉頁面後即被清空,而 localStorage 則會一直儲存。我們這裡以 localStorage 為例,簡

HTML5本地儲存localStoragesessionStorage基本用法操作異常處理

HTML5 的本地儲存 API 中的 localStorage 與 sessionStorage 在使用方法上是相同的,區別在於 sessionStorage 在關閉頁面後即被清空,而 localStorage 則會一直儲存。我們這裡以 localStorage 為例,簡

html5 sessionStoragelocalStorage迭代

var storage = window.localStorage; for (var i=0, len = storage.length; i < len; i++){ var key = storage.key(i); var val

HTML5本地存儲應用sessionStoragelocalStorage

有效 臨時 都是 ear cal query 會話 function note 在html5之前,瀏覽器要實現數據的存儲,一般都是用cookie,但是cookie有域名和大小限定. html5流行之後,可以通過localStorage和sessionStorage實現瀏覽

資料結構——PTA 鄰接矩陣儲存圖的深度優先鄰接表儲存圖的廣度優先

廣度優先與深度優先是遍歷圖的兩種基本方法,大致的思想是DFS為遞迴,而BFS是佇列。 這裡給出PTA兩道題目的答案,方法很基本,但第三個形參還是第一次見,去網上搜了搜給出的說法是呼叫函式的地址,但個人感覺就是呼叫這個函式。。。 下面給出兩段程式碼 void BFS ( LGraph

HTML5 Web儲存--localStoragesessionStorage

在客戶端儲存資料 HTML5 提供了兩種在客戶端儲存資料的新方法: localStorage - 沒有時間限制的資料儲存 sessionStorage - 針對一個 session 的資料儲存 之前,這些都是由 cookie 完成的。但是 cookie 不適合大量資料

本地儲存localStoragesessionStorage的區別,都在什麼地方使用?

localStorage:長期儲存,除非設定生命週期,否則不銷燬 sessionStorage:會話期間有效,關閉瀏覽器自動銷燬。設定生命週期也可銷燬。 共性:使用setItem(key,value)新增或者修改資訊 使用getI

二叉連結串列的儲存結構和基本操作(各種求樹深度求樹葉個數)

1.二叉樹的定義及性質 二叉樹是一種樹狀結構,它的特點是每個節點至多隻能有兩棵子樹,並且二叉樹的子樹有左右之分,其次序不能任意調換。 二叉樹具有以下重要性質: 性質 1 在二叉樹的第i層上至多有2^(i-1)個節點。 性質 2 深度為k的二叉樹至多有2^k-1個節點。 性

java解析xml檔案:建立讀取增刪查改儲存

全棧工程師開發手冊 (作者:欒鵬) java使用JDOM介面解析xml檔案,包含建立、增刪查改、儲存,讀取等操作。 需要引入jdom.jar,下載 xercesImpl.jar

☆ 二叉樹的前序儲存行式儲存與前序

二叉樹的儲存與遍歷的方式有很多種,本文主要介紹二叉樹的鏈式儲存; 其中儲存與遍歷均採用前序序列。 ***************************************************************************************

關於本地快取localstoragesessionStorage 陣列 (array)字串(string) 物件(object)的儲存技巧和注意事項

localstorage與sessionStorage的使用方法都是一樣的 唯一的區別在與 localstorage是永久儲存在你的計算機上  sessionstorage只要瀏覽器關閉,儲存就消失 <!DOCTYPE html> <html> &l

圖的儲存應用

1. 基本術語 圖有有向和無向之分,在此基礎上對應有不同的術語及結構。 (有向)完全圖:每個點到其它點都有直接路徑。 連通圖:圖中任意兩點連通。 連通分量:無向圖中的極大連通子圖。 強連通圖:有向圖中任意兩點都存在路徑。 強連通分量:有向圖中的極大強

palindrome-partitioning I&II——回文切割深度

初始化 mini 之間 pro 問題 imu string art possible I: Given a string s, partition s such that every substring of the partition is a palindrome. R

二叉樹的前序中序後序層次的遞歸與非遞歸實現

不為 sta logs 結束 nod 遞歸實現 inorder count site 二叉樹的遍歷有前序遍歷、中序遍歷、後序遍歷、層次遍歷等,筆者在這裏總結一下各種遍歷的實現。 一.前序遍歷。 前序遍歷訪問節點順序為:根節點->左子節點->右子節點。 遞歸實現如

二叉樹的廣度優先深度優先的遞歸和非遞歸實現方式

root 中序遍歷 queue push stack pop pac imp current 二叉樹的遍歷方式: 1、深度優先:遞歸,非遞歸實現方式   1)先序遍歷:先訪問根節點,再依次訪問左子樹和右子樹   2)中序遍歷:先訪問左子樹,再訪問根節點嗎,最後訪問右子樹

二叉樹的創建判斷子二叉樹

stat 技術 get sys 找到 btree gif public str 1、二叉樹節點類 public class TreeNode { int val = 0; TreeNode left = null; TreeNode right