如何利用HTML5的Web Storage技术来存储键值对数据?

avatar
作者
猴君
阅读量:0
Web Storage 是一种在浏览器端存储键值对数据的方法,包括两种类型:localStorage 和 sessionStorage。

HTML5 提供了两种 Web Storage 机制:localStorage 和 sessionStorage,它们都通过键值对的形式存储数据,以下是关于如何使用这两种 Web Storage 机制的详细指南。

localStorage 与 sessionStorage 的基本概念

特性localStoragesessionStorage
存储位置 本地硬件上,数据持久化存储。 session 对象中,数据在浏览器关闭时被清除。
生命周期 永久,除非手动清除。 临时,仅在当前会话有效。
大小限制 约 5MB(不同浏览器可能有所不同)。 同上。
使用场景 用于存储需要长期保留的数据,如用户设置、登录信息等。 用于存储会话期间的临时数据,如表单数据、页面状态等。

Web Storage 常用方法

如何利用HTML5的Web Storage技术来存储键值对数据?

localStorage 示例

 <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF8">     <meta name="viewport" content="width=devicewidth, initialscale=1.0">     <title>Web Storage Example</title> </head> <body>     <script>         // 保存数据         localStorage.setItem('name', 'Alice');         console.log(localStorage.getItem('name')); // Alice         // 修改数据         localStorage.setItem('name', 'Bob');         console.log(localStorage.getItem('name')); // Bob         // 删除单个数据         localStorage.removeItem('name');         console.log(localStorage.getItem('name')); // null         // 清空所有数据         localStorage.clear();         console.log(localStorage.length); // 0     </script> </body> </html>

sessionStorage 示例

 <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF8">     <meta name="viewport" content="width=devicewidth, initialscale=1.0">     <title>Session Storage Example</title> </head> <body>     <script>         // 保存数据         sessionStorage.setItem('username', 'JohnDoe');         console.log(sessionStorage.getItem('username')); // JohnDoe         // 修改数据         sessionStorage.setItem('username', 'JaneDoe');         console.log(sessionStorage.getItem('username')); // JaneDoe         // 删除单个数据         sessionStorage.removeItem('username');         console.log(sessionStorage.getItem('username')); // null         // 清空所有数据         sessionStorage.clear();         console.log(sessionStorage.length); // 0     </script> </body> </html>

构造函数封装操作

为了更方便地操作 localStorage,可以创建一个构造函数来封装其方法:

 var LocalEvent = function(item) {     this.get = function() { return localStorage.getItem(item); }     this.set = function(val) { localStorage.setItem(item, val); }     this.remove = function() { localStorage.removeItem(item); }     this.clear = function() { localStorage.clear(); } } var local1 = new LocalEvent('name1'); var local2 = new LocalEvent('name2'); local1.set('Hello World'); local2.set('Hello Linxin'); console.log(local1.get()); // Hello World console.log(local2.get()); // Hello Linxin

监听 storage 事件

可以通过监听window 对象的storage 事件并指定其事件处理函数,当页面中对 localStorage 或 sessionStorage 进行修改时,则会触发对应的处理函数:

 window.addEventListener('storage', function(e) {     console.log('key=' + e.key + ', oldValue=' + e.oldValue + ', newValue=' + e.newValue); });

调试工具

谷歌浏览器自带调试工具 (chrome devtools) 可以用来调试 localStorage 和 sessionStorage:

1、打开浏览器按 F12 调出调试工具。

2、选择 Application 选项卡,点击左侧栏的 Storage。

3、选中要调试的网站域名,可以看到右边有对应的 key 和 value,可以通过右键进行编辑或删除等。

兼容性

IE8 以上版本支持 Web Storage,但需要在服务器环境下打开页面才支持,直接双击打开文件的 file:// 协议是不支持的,到了 IE11 才支持 file:// 下打开的页面,其他现代浏览器的支持程度都很高,包括在手机上的兼容,具体兼容性情况可以参考 [Can I use](http://caniuse.com/#search=localstorage)。

FAQs: Web Storage 常见问题解答

Q1: localStorage 和 sessionStorage 的区别是什么?

区别:localStorage 用于持久化存储,数据会长期保存在客户端;而 sessionStorage 用于会话存储,数据只在当前会话有效,关闭浏览器后数据会被清除,localStorage 的数据可以在多个标签页间共享,而 sessionStorage 的数据仅在当前标签页内有效。

Q2: 如果存储的对象不是字符串怎么办?

解决方法:如果需要存储的对象不是字符串格式,可以使用 JSON.stringify() 将对象转换为 JSON 字符串再进行存储,读取时,使用 JSON.parse() 将字符串转换回对象。

 // 存储对象 var obj = { name: "Alice", age: 30 }; localStorage.setItem("user", JSON.stringify(obj)); // 读取对象 var storedObj = JSON.parse(localStorage.getItem("user")); console.log(storedObj); // { name: "Alice", age: 30 }


HTML5 使用 Web Storage 存储键值对数据指南

Web Storage 是一种在浏览器中存储数据的方法,它允许网站存储键值对数据,而不是使用传统的 cookies,Web Storage 提供了两种存储方式:localStoragesessionStorage,本文将详细介绍这两种方法的使用。

1. localStorage

localStorage 提供了一种在用户的浏览器中持久存储数据的方式,这意味着即使浏览器关闭后,数据也会保留。

1.1 基本用法

 // 存储数据 localStorage.setItem('key', 'value'); // 获取数据 var value = localStorage.getItem('key'); // 删除数据 localStorage.removeItem('key'); // 清空所有数据 localStorage.clear();

1.2 注意事项

localStorage 的数据存储空间通常为 5MB。

存储的数据是字符串形式,如果需要存储对象,需要先进行序列化。

2. sessionStorage

sessionStoragelocalStorage 类似,但它存储的数据仅在当前会话中有效,当用户关闭浏览器窗口后,存储的数据会被清除。

2.1 基本用法

 // 存储数据 sessionStorage.setItem('key', 'value'); // 获取数据 var value = sessionStorage.getItem('key'); // 删除数据 sessionStorage.removeItem('key'); // 清空所有数据 sessionStorage.clear();

2.2 注意事项

sessionStorage 的数据仅在当前会话中有效,关闭浏览器窗口后数据消失。

localStorage 一样,存储的数据是字符串形式。

3. 归纳

Web Storage 提供了一种简单的方式来存储和检索数据,它们在网页开发中非常有用,使用localStoragesessionStorage 可以根据实际需求选择合适的存储方式。

4. 示例

以下是一个简单的示例,展示如何使用localStoragesessionStorage

 <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF8">     <title>Web Storage Example</title> </head> <body>     <script>         // 使用 localStorage 存储数据         localStorage.setItem('name', 'John Doe');         console.log('LocalStorage name: ' + localStorage.getItem('name'));         // 使用 sessionStorage 存储数据         sessionStorage.setItem('age', '30');         console.log('SessionStorage age: ' + sessionStorage.getItem('age'));         // 清空 localStorage         localStorage.clear();         console.log('LocalStorage cleared');         // 清空 sessionStorage         sessionStorage.clear();         console.log('SessionStorage cleared');     </script> </body> </html>

在这个示例中,我们使用localStoragesessionStorage 分别存储和检索数据,并在控制台中打印结果,我们清空了两个存储区域的数据。

    广告一刻

    为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!