




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HTML5本地存储详解HTML5 storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取。这个概念和cookie相似,区别是它是为了更大容量存储设计的。HTML5storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取。这个概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候cookie都会被发送过去。HTML5的storage是存储在你的计算机上,网站在页面加载完毕后可以通过Javascript来获取这些数据。1、sessionStorage检测!window.sessionStorage;常用方法.key = value.setItem(key,value).getItem(key).removeItem(key).clear()javascript1. window.sessionS = rainman; / 赋值2. window.sessionStorage.setItem(name,cnblogs); / 赋值3. window.sessionStorage.getItem(name); / 取值4. window.sessionStorage.removeItem(name); / 移除值5. window.sessionStorage.clear(); / 删除所有sessionStorage事件:window.onstorage检测值得变化,浏览器支持不好。说明:cookie的存储限制在了4k之内,相比来说,session storage有了更大的存储空间,但至于具体多大,这要参照浏览器厂商的具体实现。cookie有一个机制,就是在每次客户端请求服务器的时候都会将cookie发送给服务器,这无疑会做很多不必要的操作,因为并不是每次请求服务器都需要cookie的所有信息,而session storage很好的解决了这个问题,它不是采取自动发送的方式,这样就减少了不必要的工作。通过sessionStorage所存储数据的生命周期,和Session类似,关闭浏览器(或标签页)后数据就不存在了。但刷新页面或使用“前进”、“后退按钮”后sessionStorage仍然存在。session storage每个窗口的值都是独立的(每个窗口都有自己的数据),它的数据会随着窗口的关闭而消失,窗口间的sessionStorage也是不可以共享的。setItem中的key、value使用的是字符串的形式进行存储的。也就是说如果有如下的代码:setItem(count, 1);通过getItem(count) + 5 得到的将不是预期的6(整数),而是16(字符串)。再次使用setItem设置已经存在的key的value时,新的值将替代旧的值。当存储中的数据发生改变时,会触发相应的事件(window.onstorage),但目前各浏览器对此事件的支持并不完善,暂时可以忽略。2、localStorage检测!window.localStorage;方法和sessionStorage相同说明:local storage把只把数据存储在了客户端使用,不会发送的服务器上(除非你故意这样做)。而且对于某一个域下来说,local storage是共享的(多个窗口共享一个“数据库”)。localStorage用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。举例javascript1. /结合JSON.stringify使用更强大2. var person = name: rainman, age: 24;3. localStorage.setItem(me, JSON.stringify(person);4. JSON.parse(localStorage.getItem(me).name; / rainman5.6. /*7. * JSON.stringify,将JSON数据转化为字符串8. * JSON.stringify(name: fred, age: 24); / name:fred,age:249. * JSON.stringify(a, b, c); / a,b,c10. * JSON.parse,反解JSON.stringify11. * JSON.parse(a,b,c) / a,b,c12. */3、Database Storage对简单的数据存储,使用sessionStorage和localStorage能够很好地完成,但是在对琐碎的关系数据进行处理之外,它就力所不及了。而这正是 HTML 5 的“Web SQL Database”API 接口的应用所在。A、打开链接javascript1. var db = openDatabase(ToDo, 0.1, A lalert of to do items., 200000); / 打开链接2. if(!db) alert(Failed to connect to database.); / 检测连接是否创建成功以上代码创建了一个数据库对象 db,名称是 Todo,版本编号为0.1。db 还带有描述信息和大概的大小值。如果需要,这个大小是可以改变的,所以没有必要预先假设允许用户使用多少空间。绝不可以假设该连接已经成功建立,即使过去对于某个用户它是成功的。为什么一个连接会失败,存在多个原因。也许用户代理出于安全原因拒绝你的访问,也许设备存储有限。面对活跃而快速进化的潜在用户代理,对用户的机器、软件及其能力作出假设是非常不明智的行为。比如,当用户使用手持设备时,他们可自由处置的数据可能只有几兆字节。B、执行查询javascript1. db.transaction( function(tx) 2. tx.executeSql(3. INSERT INTO ToDo (label, timestamp) values(?, ?),4. lebel, new Date().getTime(),5. function(tx2, result) alert(成功); ,6. function(tx2, error) alert(失败: + error.message); 7. );8. );执行SQL语句使用database.transaction()函数,该函数只有一个参数,负责执行查询的函数。该函数具有一个类型事务的参数(tx)。该事务参数(tx)具有一个函数:executeSql()。这个函数使用四个参数:表示查询的SQL字符串;插入到查询中问号所在处的字符串数据;一个成功时执行的函数;一个失败时执行的函数。执行成功的函数有两个参数:tx2,事务性参数;result,执行的返回结果,结构如图执行成功的函数也有两个参数:tx2,事务性参数;error,错误对象,结构如图C、其它Chrome支持; firefox(测试时版本4.01)不支持;IE8不支持。D、示例javascript1. /创建数据库2. var db = openDatabase(users, 1.0, 用户表, 1024 * 1024);3. if(!db)4. alert(Failed to connect to database.);5. else 6. alert(connect to database K.);7. 8.9. / 创建表 10. db.transaction( function(tx) 11. tx.executeSql(12. CREATE TABLE IF NOT EXISTS users (id REAL UNIQUE, name TEXT),13. ,14. function() alert(创建users表成功); ,15. function(tx, error) alert(创建users表失败: + error.message); 16. );17. );18.19. / 插入数据20. db.transaction(function(tx) 21. tx.executeSql(22. INSERT INTO users (id, name) values(?, ?),23. Math.random(), space,24. function() alert(插入数据成功); ,25. function(tx, error) alert(插入数据失败: + error.message);26. );27. );28.29. / 查询30. db.transaction( function(tx) 31. tx.executeSql(32. SELECT * FROM users, ,33. function(tx, result) 34. var rows = result.rows, length = rows.length, i=0;35. for(i; i length; i+) 36. alert(37. id= + rows.item(i)id +38. name=+ rows.item(i)name39. );40. 41. ,42. function(tx, error)43. alert(Select Failed: + error.message);44. 45. );46. );47.48. / 删除表49. db.transaction(function (tx) 50. tx.executeSql(DROP TABLE users);51. );4、globalStorage这个也是html5中提出来,在浏览器关闭以后,使用globalStorage存储的信息仍能够保留下来,localStorage一样,域中任何一个页面存储的信息都能被所有的页面共享基本语法globalS 在下面所有的子域都可以通过这个命名空间存储对象来进行读和写。globalS 在域名下面的所有网页都可以通过这个命名空间存储对象来进行读和写。globalStorageorg 在.org域名下面的所有网页都可以通过这个命名空间存储对象来进行读和写。globalStorage 在任何域名下的任何网页都可以通过这个命名空间存储对象来进行读和写方法属性setItem(key, value) 设置或重置 key 值。getItem(key) 获取 key 值。removeItem(key) 删除 key 值。设置 key 值:window.globalS.key = value;获取 key 值:value = window.globalS.key;其它过期时间同 local
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年慢性病管理咨询与技术服务合同范本
- 2025年跨平台电商与实体店联合促销服务合同
- 2025年农产品溯源体系建设与技术服务合同
- 2025智能养老与健康管理保险公司服务合作协议
- 2025年度新能源汽车动力电池回收利用合作协议正本
- 2025年环保型新能源车辆GPS定位与智能调度服务合同
- 2025年KTV连锁经营与管理咨询服务合同
- 2025年大数据驱动金融风控合作框架协议范本
- 2025年农产品加工企业安全生产劳务服务合同范本
- 2025年年度乘用车维修质保与节能降耗服务合同
- 中级职称评审述职报告
- 2025年9月-2026年1月安全工作安排表
- 2025年事业单位招聘考试建筑类综合能力测试试卷八十二:建筑工程施工监理案例分析八
- 2025年事业单位招聘考试综合类专业能力测试试卷(工程类)-建筑工程施工质量控制
- 2025年教育法学法规试题及答案
- 在接受诫勉谈话时的检讨及整改情况报告
- 汉教课堂观察汇报
- 2025年四川省高考化学试卷真题(含答案解析)
- 2025年高级(三级)评茶员职业技能鉴定《理论知识》真题卷(后附答案及解析)
- 2023成都高新未来科技城发展集团有限公司招聘试题及答案解析
- 变电站接地网深井接地的设计计算
评论
0/150
提交评论