HTML5 提供了两种 Web Storage 机制:localStorage 和 sessionStorage,它们都通过键值对的形式存储数据,以下是关于如何使用这两种 Web Storage 机制的详细指南。
localStorage 与 sessionStorage 的基本概念
特性 | localStorage | sessionStorage |
存储位置 | 本地硬件上,数据持久化存储。 | session 对象中,数据在浏览器关闭时被清除。 |
生命周期 | 永久,除非手动清除。 | 临时,仅在当前会话有效。 |
大小限制 | 约 5MB(不同浏览器可能有所不同)。 | 同上。 |
使用场景 | 用于存储需要长期保留的数据,如用户设置、登录信息等。 | 用于存储会话期间的临时数据,如表单数据、页面状态等。 |
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 提供了两种存储方式:localStorage
和sessionStorage
,本文将详细介绍这两种方法的使用。
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
sessionStorage
与localStorage
类似,但它存储的数据仅在当前会话中有效,当用户关闭浏览器窗口后,存储的数据会被清除。
2.1 基本用法
// 存储数据 sessionStorage.setItem('key', 'value'); // 获取数据 var value = sessionStorage.getItem('key'); // 删除数据 sessionStorage.removeItem('key'); // 清空所有数据 sessionStorage.clear();
2.2 注意事项
sessionStorage
的数据仅在当前会话中有效,关闭浏览器窗口后数据消失。
与localStorage
一样,存储的数据是字符串形式。
3. 归纳
Web Storage 提供了一种简单的方式来存储和检索数据,它们在网页开发中非常有用,使用localStorage
和sessionStorage
可以根据实际需求选择合适的存储方式。
4. 示例
以下是一个简单的示例,展示如何使用localStorage
和sessionStorage
:
<!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>
在这个示例中,我们使用localStorage
和sessionStorage
分别存储和检索数据,并在控制台中打印结果,我们清空了两个存储区域的数据。