html5 本地批量存储,HTML5本地存储
什么是HTML5存储?
简单地说,它是一种让web页面在浏览器端本地化存储键值对的方式。跟cookies一样,即使你从网站导航到别的网站,关掉了浏览器的tab页,退出了浏览器,数据依然存在;与cookies不同的是,数据绝不会被发送到远程服务器上。
示例:检测是否存在HTML5存储
自己编写代码
functionsupports_html5_storage() {try{return 'localStorage' in window && window['localStorage'] !== null;
}catch(e) {return false;
}
}
if(Modernizr.localstorage) {//window.localStorage is available!
} else{//no native support for HTML5 storage :(
//maybe try dojox.storage or a third-party solution
}
如何使用HTML5存储数据?
HTML5存储基于key/value对,依据key来存储数据,再依据key来取数据。
key:字符串类型。
value:任何JavaScript支持的类型,包括strings, Booleans, integers, floats。
然而value实际上是以字符串的形式存储的,所以如果你要存储任何string类型以外的数据,你需要使用 parseInt() 或 parseFloat() 函数来强制转化类型。
存储接口
Storage接口之 getItem(), setItem()
interface Storage {
getter any getItem(inDOMString key);
setter creatorvoid setItem(in DOMString key, inany data);
};
调用 setItem() 时使用已存在的key会覆盖之前value的内容,调用 getItem() 时使用不存在的key会返回null。
跟其他JavaScript对象一样,你可以把localStroage对象当作一个关联数组,使用方括号来替代 getItem() 与 setITem():
var foo = localStorage.getItem("bar");//...
localStorage.setItem("bar", foo);
可以被替换成方括号语法:
var foo = localStorage["bar"];//...
localStorage["bar"] = foo;
Storage接口之 removeItem(), clear()
interface Storage {
deletervoid removeItem(inDOMString key);voidclear();
};
调用 removeItem() 时如果key不存在不会有任何效果。
Storage接口之 length属性,每个key的名称
interface Storage {
readonly attribute unsignedlonglength;
getter DOMString key(in unsigned longindex);
};
如果你调用 key() 但是index不在(0 - (length-1))的范围内,函数将返回null.
另外HTML最多支持5M本地存储,超出会引发“QUOTA_EXCEEDED_ERR”异常,且不能申请新的存储空间。
如何跟踪HTML5存储区的更改?
如果你想要用代码跟踪什么时候存储区域发生了改变,你可以捕获storage事件。无论是调用了setItem(),removeItem()还是clear(),只要发生了更改,storage事件就会被触发。
任何支持localStorage的地方都支持storage事件。也包括不支持W3C标准addEventListener的IE8。所以为了hook这个storage事件,需要检查浏览器支持什么事件机制。
捕获storage事件跟捕获其他事件一样,也可以用jQuery或其他JavaScript库来注册event handlers。
if(window.addEventListener) {
window.addEventListener("storage", handle_storage, false);
}else{
window.attachEvent("onstorage", handle_storage);
};
handle_storage回调函数将会被调用,并传入一个StorageEvent对象,除了IE的事件对象存储在 window.event 当中。
functionhandle_storage(e) {if (!e) { e =window.event; }
}
至此,变量e将会变成StorageEvent对象,并拥有以下有用的属性:
属性
类型
描述
key
string
添加、移除或修改的key的名称
oldValue
any
之前的值(现在已经被覆盖了),如果是新添加的item则是null
newValue
any
新的值,如果是被移除则为null
url*/uri*
string
调用方法触发更改的页面
storage事件不能被取消。
HTML5实战
保存游戏状态:
functionsaveGameState() {if (!supportsLocalStorage()) { return false; }
localStorage["halma.game.in.progress"] =gGameInProgress;for (var i = 0; i < kNumPieces; i++) {
localStorage["halma.piece." + i + ".row"] =gPieces[i].row;
localStorage["halma.piece." + i + ".column"] =gPieces[i].column;
}
localStorage["halma.selectedpiece"] =gSelectedPieceIndex;
localStorage["halma.selectedpiecehasmoved"] =gSelectedPieceHasMoved;
localStorage["halma.movecount"] =gMoveCount;return true;
}
恢复游戏状态:
functionresumeGame() {if (!supportsLocalStorage()) { return false; }
gGameInProgress= (localStorage["halma.game.in.progress"] == "true");if (!gGameInProgress) { return false; }
gPieces= newArray(kNumPieces);for (var i = 0; i < kNumPieces; i++) {var row = parseInt(localStorage["halma.piece." + i + ".row"]);var column = parseInt(localStorage["halma.piece." + i + ".column"]);
gPieces[i]= newCell(row, column);
}
gNumPieces=kNumPieces;
gSelectedPieceIndex= parseInt(localStorage["halma.selectedpiece"]);
gSelectedPieceHasMoved= localStorage["halma.selectedpiecehasmoved"] == "true";
gMoveCount= parseInt(localStorage["halma.movecount"]);
drawBoard();return true;
}
html5 本地批量存储,HTML5本地存储相关推荐
- Html5本地存储和本地数据库
个网站如何能在客户的浏览器存储更多的数据呢? 在Html4的时代在浏览器端存储点网站个性化的数据,尤其是用户浏览器的痕迹,用户的相关数据等一般只能存储在Cookie中,但是大多是浏览器对于Cookie ...
- html5自动添加数据库,HTML5本地存储之如果没有数据库究竟会怎样
本章主要内容是WebStorage与本地数据库,其中WebStorage是对cookie的优化,本地数据库是HTML5添加的一个功能,使用它可以在客户端建立一个数据库 大大减轻服务器端的负担,加快访问 ...
- HTML5本地存储与会话存储
本文翻译自:HTML5 Local storage vs. Session storage 除了非持久性和仅限于当前窗口的范围之外,对本地存储的会话存储有任何好处(性能,数据访问等)吗? #1楼 参考 ...
- HTML5基础扩展——地理位置、本地存储、缓存
HTML5扩展,继上两篇博客,我们来看一下HTML5的一些扩展的功能,由于HTML5更多是为了兼容电脑浏览器,安卓浏览器,苹果浏览器更多浏览器,或者说为这些浏览器提供一个统一的标准.因此目前在手机上的 ...
- HTML5 - Web存储使用详解(本地存储、会话存储)
1,Web存储介绍 HTML5的Web存储功能是让网页在用户计算机上保存一些信息.Web存储又分为两种: (1)本地存储,对应 localStorage 对象.用于长期保存网站的数据,并且站内任何页 ...
- HTML5开发 Web SQL Database 本地数据库
Web Database 介绍 Web SQL数据库API实际上不是HTML5规范的组成部分,而是单独的规范.它通过一套API来操纵客户端的数据库.Safari.Chrome.Firefox.Oper ...
- html 页面存储,HTML本地存储
本地存储:通过本地存储(Local Storage),web 应用程序能够在用户浏览器中对数据进行本地的存储. 在 HTML5 之前,应用程序数据只能存储在 cookie 中,包括每个服务器请求.本地 ...
- html实现数据存储,HTML5数据存储
相信你已经对HTML5的数据存储有过了解或者是深入的了解,但是哥还是要在此略提一下HTML4与HTML5的数据存储. HTML4的数据存储主要有cookie存储和session存储,这两种存储都有时间 ...
- iOS 快速存储到本地
iOS开发中经常用到本地持久化的技术,本地持久化的方法也很多,常用方法有如下几种: 1.NSUserdaults (用户默认) 2.write to file (写文件) 3.NSkeyArchive ...
- 工作中搜索页面搜索记录功能的封装(存储到本地)
//!*封装添加搜索记录功能 (newRecord:str,当参数为空时为获取历史记录; num:记录数,默认为12条;) function addHisRecord(newRecord, num){ ...
最新文章
- LocaleResolver
- freetype字体位图转距离场_那些火遍ins的字体小技巧,不看你就亏了
- java并发编程入门_探讨一下!Java并发编程基础篇一
- redhat下svn服务器搭建
- springmvc或者springboot 中实现跨域的5种方式
- 计算机系统更新不上怎么办理,电脑系统更新打不开怎么办
- 硅谷之火:人与计算机的未来
- iOS 蓝牙开发用到的一些格式转换
- 冒险者传说pc6java_我的世界之冒险者传说整合包游戏
- Linux默认端口介绍
- error C2440: “类型转换”: 无法从“LPVOID”转换为“double
- bluez5.50+pulseaudio实现蓝牙音响音频播放
- 图形学初步--裁剪算法之Liang-Barsky算法
- Go语言十一大主流微服务框架
- 架构师成长之路(4)--高可用高并发架构(图谱)
- 单片机c语言篮球比分_基于单片机的篮球计时计分器设计(C语言编程、含proteus仿真图)...
- ARM 指令集 和 Thumb 指令集
- WebUploader重复多次上传问题
- 用switch语句输入英文单词的星期几会显示中午的星期几
- 服务器添加磁盘找不到怎么办
热门文章
- python中的raw string的使用
- 【Spring】spring基于注解的声明式事务控制
- Python Re 模块超全解读!详细
- TENSORFLOW变量作用域(VARIABLE SCOPE)
- LeetCode简单题之去掉最低工资和最高工资后的工资平均值
- 零起点学算法03——超简单模仿算术题
- BigDecimal 转换为int 或者其他类型
- android.util.AndroidRuntimeException: requestFeature() must be called before adding content
- java.lang.UnsupportedOperationException: Required method destroyItem was not overridden
- android 购物车数量加减计算(几行代码实现效果)