HTML5 storag存储详解

本篇文章主要介绍HTML5 storag存储详解,感兴趣的朋友参考下,希望对大家有所帮助。

 HTML5storage提供了一种方式让网站能够把信息存储到你本地的计算机上,并再以后需要的时候进行获取。这个概念和cookie相似,区别是它是为了更大容量存储设计的。Cookie的大小是受限的,并且每次你请求一个新的页面的时候cookie都会被发送过去。HTML5的storage是存储在你的计算机上,网站在页面加载完毕后可以通过Javascript来获取这些数据。

1、sessionStorage

检测

!!window.sessionStorage;

常用方法

.key = value

.setItem(key,value)

.getItem(key)

.removeItem(key)

.clear()

window.sessionStorage.name = 'rainman';           // 赋值  window.sessionStorage.setItem('name','cnblogs');  // 赋值  window.sessionStorage.getItem('name');            // 取值  window.sessionStorage.removeItem('name');         // 移除值  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用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的。

举例

//结合JSON.stringify使用更强大  var person = {'name': 'rainman', 'age': 24};  localStorage.setItem("me", JSON.stringify(person));  JSON.parse(localStorage.getItem('me')).name;    // 'rainman'    /** * JSON.stringify,将JSON数据转化为字符串 *     JSON.stringify({'name': 'fred', 'age': 24});   // '{"name":"fred","age":24}' *     JSON.stringify(['a', 'b', 'c']);               // '["a","b","c"]' * JSON.parse,反解JSON.stringify *     JSON.parse('["a","b","c"]')                    // ["a","b","c"] */

3、Database Storage

对简单的数据存储,使用sessionStorage和localStorage能够很好地完成,但是在对琐碎的关系数据进行处理之外,它就力所不及了。而这正是 HTML 5 的“Web SQL Database”API 接口的应用所在。

A、打开链接

var db = openDatabase("ToDo", "0.1", "A lalert of to do items.", 200000);    // 打开链接  if(!db) { alert("Failed to connect to database."); }                         // 检测连接是否创建成功

以上代码创建了一个数据库对象 db,名称是 Todo,版本编号为0.1。db 还带有描述信息和大概的大小值。如果需要,这个大小是可以改变的,所以没有必要预先假设允许用户使用多少空间。

绝不可以假设该连接已经成功建立,即使过去对于某个用户它是成功的。为什么一个连接会失败,存在多个原因。也许用户代理出于安全原因拒绝你的访问,也许设备存储有限。面对活跃而快速进化的潜在用户代理,对用户的机器、软件及其能力作出假设是非常不明智的行为。比如,当用户使用手持设备时,他们可自由处置的数据可能只有几兆字节。

B、执行查询

db.transaction( function(tx) {               tx.executeSql(              "INSERT INTO ToDo (label, timestamp) values(?, ?)",               ['lebel', new Date().getTime()],               function(tx2, result){ alert('成功'); },               function(tx2, error){ alert('失败:' + error.message); }              );               });

执行SQL语句使用database.transaction()函数,该函数只有一个参数,负责执行查询的函数。

该函数具有一个类型事务的参数(tx)。

该事务参数(tx)具有一个函数:executeSql()。这个函数使用四个参数:
表示查询的SQL字符串;插入到查询中问号所在处的字符串数据;一个成功时执行的函数;一个失败时执行的函数。

执行成功的函数有两个参数:tx2,事务性参数;result,执行的返回结果,结构如图

执行成功的函数也有两个参数:tx2,事务性参数;error,错误对象,结构如图 

C、其它

Chrome支持; firefox(测试时版本4.01)不支持;IE8不支持。

D、示例

//创建数据库  var db = openDatabase("users", "1.0", "用户表", 1024 * 1024);   if(!db){      alert("Failed to connect to database.");   } else {      alert("connect to database 'K'.");   }    // 创建表  db.transaction( function(tx) {       tx.executeSql(          "CREATE TABLE IF NOT EXISTS users (id REAL UNIQUE, name TEXT)",           [],           function(){ alert('创建users表成功'); },           function(tx, error){ alert('创建users表失败:' + error.message); }      );  });     // 插入数据  db.transaction(function(tx) {       tx.executeSql(          "INSERT INTO users (id, name) values(?, ?)",           [Math.random(), 'space'],           function(){ alert('插入数据成功'); },           function(tx, error){ alert('插入数据失败: ' + error.message);}      );   });     // 查询  db.transaction( function(tx) {       tx.executeSql(          "SELECT * FROM users", [],             function(tx, result) {              var rows = result.rows, length = rows.length, i=0;              for(i; i < length; i++) {                   alert(                      'id=' + rows.item(i)['id'] +                       'name='+ rows.item(i)['name']                  );               }           },           function(tx, error){              alert('Select Failed: ' + error.message);          }      );   });     // 删除表  db.transaction(function (tx) {        tx.executeSql('DROP TABLE users');       });

4、globalStorage

这个也是html5中提出来,在浏览器关闭以后,使用globalStorage存储的信息仍能够保留下来,localStorage一样,域中任何一个页面存储的信息都能被所有的页面共享

基本语法

globalStorage[‘developer.mozilla.org’] —— 在developer.mozilla.org下面所有的子域都可以通过这个命名空间存储对象来进行读和写。

globalStorage[‘mozilla.org’] —— 在mozilla.org域名下面的所有网页都可以通过这个命名空间存储对象来进行读和写。

globalStorage[‘org’] —— 在.org域名下面的所有网页都可以通过这个命名空间存储对象来进行读和写。

globalStorage[”] —— 在任何域名下的任何网页都可以通过这个命名空间存储对象来进行读和写

方法属性

setItem(key, value) —— 设置或重置 key 值。

getItem(key) —— 获取 key 值。

removeItem(key) —— 删除 key 值。

设置 key 值:window.globalStorage[“planabc.net”].key = value;

获取 key 值:value = window.globalStorage[“planabc.net”].key;

其它

过期时间同 localStorage,其它的一些特性也和localStorage相似。

现在Firefox只支持当前域下的globalStorage存储, 如果使用公用域会导致一个这样一个类似的错误“Security error” code: “1000”。

5、兼容性

方法

Chrome

Firefox (Gecko)

Internet Explorer

Opera

Safari (WebKit)

localStorage

4

2

8

10.50

4

sessionStorage

5

2

8

10.50

4

globalStorage

2


 

 相关推荐:

vuex+localstorage动态监听storage步骤详解

HTMl5的存储方式sessionStorage和localStorage详解

vuex结合localstorage动态监听storage的变化

以上就是HTML5 storag存储详解的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1546213.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月21日 17:58:39
下一篇 2025年12月21日 17:58:53

相关推荐

  • UC浏览器官方网页版登录入口 UC浏览器最新官网链接

    UC浏览器官方网页版登录入口在官网https://www.ucweb.com/,点击顶部“网页版”选项并登录账号即可使用。 UC浏览器官方网页版登录入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来UC浏览器最新官网链接,想了解UC浏览器功能特点的网友一起随小编来瞧瞧吧! https:/…

    2026年9月23日
    700
  • 如何利用 JavaScript 实现一个支持拖放排序的交互界面?

    答案是利用HTML5拖放API实现拖拽排序,通过设置draggable属性和监听dragstart、dragover、drop事件控制元素移动,结合CSS提升交互反馈。 要实现一个支持拖放排序的交互界面,核心是利用 HTML5 的拖放 API(Drag and Drop API)结合 JavaScr…

    2026年9月22日
    100
  • 谷歌浏览器官方在线访问 最新版Chrome官网登录

    谷歌浏览器官方在线访问入口是https://www.google.cn/chrome/,提供简洁界面、跨设备同步、高效内核、安全防护和丰富扩展生态。 谷歌浏览器官方在线访问入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来最新版Chrome官网登录地址,想要获取纯净浏览体验的网友一起随小…

    2026年9月21日
    200
  • 猎豹浏览器官方网址链接入口 猎豹浏览器平台直达访问官方主页

    猎豹浏览器官方网址是http://m.liebao.cn/?f=www,该网站提供极速浏览体验、个性化界面设置和实用功能整合,如双渲染引擎、安全防护、主题皮肤、广告过滤等。 猎豹浏览器官方网址链接入口在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来猎豹浏览器平台直达访问官方主页,感兴趣的网…

    2026年9月21日
    300
  • PHP播放HLS视频流的方法_PHP播放HLS视频流方法

    答案:PHP通过权限控制和文件代理实现HLS流安全分发,前端使用HTML5视频标签和hls.js播放。具体描述:HLS将视频切为.ts片段并用.m3u8索引,PHP后端可校验用户权限、防止盗链,动态输出.m3u8或.ts内容;前端通过video标签加载stream.php?id=1,结合hls.js…

    2026年9月20日
    000
  • 悟空浏览器为什么玩网页游戏很卡_悟空浏览器网页游戏卡顿原因

    1、清理缓存与数据;2、关闭后台应用;3、禁用非必要插件;4、优化网络DNS;5、启用硬件加速。通过五步优化可有效缓解悟空浏览器网页游戏卡顿问题。 如果您在使用悟空浏览器玩网页游戏时遇到卡顿现象,可能是由于浏览器资源占用过高、缓存堆积或网络连接不稳定所致。此类问题通常可以通过调整浏览器设置和优化系统…

    2026年9月11日
    100
  • VSCode怎么编译运行视频_VSCode处理视频资源的扩展配置教程

    VSCode不能编译运行视频,但可通过脚本和扩展集成FFmpeg等工具实现视频转码、剪辑、元数据提取及自动化处理,扮演视频工作流的“指挥中心”角色。 VSCode本身并不是一个视频播放器或专业的视频编辑软件,所以“编译运行视频”这个说法,在我个人看来,其实是有些误解的。它不会像C++代码那样被编译成…

    2026年9月11日
    100
  • 百度浏览器无法播放YouTube视频怎么办 百度浏览器YouTube播放问题解决方法

    百度浏览器无法播放YouTube视频,通常与浏览器兼容性、缓存问题或系统设置有关。可以尝试以下几种方法来解决。 清除浏览器缓存和Cookie 过时或损坏的缓存数据可能导致YouTube页面加载异常或视频无法播放。 打开百度浏览器,点击右上角菜单(三个横线或点)。 选择“更多工具” > “清除上…

    2026年9月10日
    200
  • VSCode代码片段:快速生成常用代码

    VSCode代码片段是通过触发词快速生成代码模板的功能,支持自定义占位符与变量。以JavaScript为例,可通过命令面板配置javascript.json文件,添加如”logf”生成带日志函数的代码块,${1}${2}为占位符,$0为最终光标位置。推荐创建React组件、E…

    2026年9月9日
    000
  • PHP视频播放器音量控制_PHP视频播放器音量控制

    音量控制由前端实现,PHP提供数据支持。HTML5视频标签结合JavaScript实现音量调节,PHP负责存储用户偏好、权限管理和动态生成初始音量配置,实现个性化播放体验。 在使用PHP开发视频播放应用时,音量控制功能通常不是由PHP本身直接实现的,因为PHP是服务器端语言,而音量控制属于前端交互功…

    2026年9月9日
    400
  • 百度浏览器Flash无法播放怎么办 百度浏览器Flash内容播放异常处理方法

    Flash技术已终结,因Adobe于2020年底停止支持,百度浏览器等主流平台均禁用,继续使用存安全风险;应转向HTML5等现代技术,仅在隔离环境中运行必要本地文件。 百度浏览器无法播放Flash,核心原因是技术过时和插件支持终止。虽然部分旧方法可能临时奏效,但需明确:Adobe已于2020年12月…

    2026年9月9日
    200
  • PHP播放本地视频文件路径怎么写_PHP播放本地视频路径技巧

    答案:PHP通过生成HTML5视频标签间接实现本地视频播放,视频文件需置于Web可访问目录,使用绝对路径避免错误,通过标签嵌入并由浏览器播放,结合htmlspecialchars()防XSS,敏感视频可移出Web目录由PHP脚本验证权限后代理输出,确保安全。 在PHP中播放本地视频文件,关键不在于P…

    2026年9月9日
    300
  • 谷歌浏览器为什么无法播放HTML5视频_谷歌浏览器视频播放异常排查方法

    首先检查并更新谷歌浏览器至最新版本,随后清除浏览器及GPU缓存,禁用硬件加速功能以排除显卡驱动兼容问题,确认视频格式为MP4、WebM等支持类型并采用H.264+AAC编码组合,重置chrome://flags实验性设置与浏览器默认配置,最后关闭扩展程序排查拦截风险并确保跨域资源具备正确CORS头。…

    2026年9月8日
    100
  • HTML视频元素使用指南

    1、随着html5的推出,新增了video元素,使得网页具备了原生播放视频的能力。在此之前,网页无法直接嵌入视频,通常需要借助第三方插件(例如flash)来实现播放功能。用户必须预先在浏览器中安装这些插件才能正常观看视频内容,若未安装,则视频无法加载或播放。这种依赖外部插件的方式不仅影响兼容性,也降…

    2026年9月7日
    000
  • Safari网页版入口 Safari直接打开

    Safari网页版可通过官网https://www.apple.com/safari/直接访问,支持跨平台浏览,页面加载快且适配多语言;具备节能、防跟踪、支持现代网页标准等技术优势,并与Apple生态无缝集成,提供简洁界面、阅读器模式和手势导航等优质用户体验。 Safari网页版入口 Safari直…

    2026年9月3日
    200
  • VSCode怎么编写地图定位_VSCode集成地图API开发位置服务应用教程

    答案是集成地图API实现定位需选择服务商、引入SDK、初始化地图并调用定位功能。具体为:在VSCode中创建Web项目,引入百度等地图API的SDK,通过HTML页面加载地图容器,使用JavaScript初始化地图实例,并结合浏览器Geolocation API或地图SDK自带控件获取位置,最后添加…

    2026年8月29日
    100
  • 推荐几款好用的文本编辑器

    推荐几款好用的文本编辑器推荐几款好用的文本编辑器推荐几款好用的文本编辑器推荐几款好用的文本编辑器

    作为程序员,编写和查看代码是日常工作的重要部分。今天,我将为大家介绍几款实用的文本编辑器。 Sublime Text 是一款轻量、简洁、高效且跨平台的编辑器。 Sublime Text的特色功能包括: 出色的扩展功能,官方称为安装包(Package)。它没有传统的右侧滚动条,而是用代码缩略图代替,这…

    2026年8月28日 用户投稿
    300
  • b站视频怎么镜像翻转_B站视频画面镜像处理技巧

    1、使用B站手机客户端可直接开启镜像翻转:进入全屏播放后点击右上角三个点,选择【镜像翻转】即可实时切换画面方向。2、通过B站网页版HTML5播放器也可实现:在电脑端播放视频时点击设置齿轮,开启【镜像画面】开关即生效。3、如需永久保存镜像效果,可借助剪映等剪辑软件对视频进行水平翻转处理后再导出使用。 …

    2026年8月28日
    300
  • VSCode怎么调出HTML模板_VSCode快速生成HTML基础模板结构教程

    答案:在VSCode中输入!后按Tab键即可快速生成HTML5模板,也可使用html:5或doc等Emmet缩写,若失效需检查文件类型和设置,还可通过自定义snippets.json实现个性化模板。 在VSCode中快速生成HTML基础模板结构,最直接也最常用的方法就是利用其内置的Emmet功能。你…

    2026年8月26日
    200
  • UC浏览器视频小窗播放怎么用_UC浏览器视频小窗播放方法

    在UC浏览器播放视频时,按返回键或滑动退出可启用小窗模式;02. 若未自动开启,可通过菜单手动选择“小窗播放”;03. 小窗支持拖动、缩放与手势控制,便于多任务操作。 如果您在观看视频时希望同时浏览其他内容,可以使用UC浏览器的视频小窗播放功能,让视频以悬浮窗口的形式继续播放。该功能适用于移动端操作…

    2026年8月26日
    000

发表回复

登录后才能评论
关注微信