JavaScript 获取浏览器本地数据的4种方式

server/2024/10/18 21:37:32/

JavaScript 获取浏览器本地数据的方式

我们在做Web开发中,客户端存储机制对于在浏览器中持久化数据至关重要。这些机制允许开发者存储用户偏好设置、应用状态以及其他关键信息,从而增强用户体验。本文将介绍几种常用的JavaScript获取浏览器本地数据的方式,包括localStoragesessionStorageCookiesIndexedDB,并提供相应的代码示例。
在这里插入图片描述

1. localStorage

localStorage 提供了一种方式来存储数据在用户的本地计算机上,并且没有过期时间。这意味着存储的数据将在浏览器关闭后仍然存在,直到被显式删除。

代码示例

javascript">// 存储数据
localStorage.setItem('username', 'JohnDoe');// 获取数据
let username = localStorage.getItem('username');
console.log(username); // 输出: JohnDoe// 删除数据
localStorage.removeItem('username');// 清除所有数据
// localStorage.clear();

2. sessionStorage

sessionStoragelocalStorage 类似,但它存储的数据仅在当前会话期间有效。一旦页面会话结束(例如,当用户关闭浏览器标签页或窗口时),存储的数据将被删除。

代码示例

javascript">// 存储数据
sessionStorage.setItem('sessionId', '12345');// 获取数据
let sessionId = sessionStorage.getItem('sessionId');
console.log(sessionId); // 输出: 12345// 注意:关闭页面会话后,该数据将不再可用
// 删除数据
// sessionStorage.removeItem('sessionId');// 由于 sessionStorage 会随着页面会话的结束而自动清除,通常不需要手动清除所有数据
// 但如果你确实需要,可以使用 sessionStorage.clear();

3. Cookies

Cookies 是服务器发送到用户浏览器并存储在本地的一小块数据。它们通常用于跟踪用户会话、存储用户偏好设置等。尽管 Cookies 可以在客户端通过 JavaScript 访问,但它们的设置和读取通常更多地与服务器端交互相关。

代码示例

javascript">// 设置 Cookie
document.cookie = "theme=light; expires=Thu, 01 Jan 2030 00:00:00 GMT; path=/";// 获取所有 Cookies 并解析出特定的 Cookie
function getCookie(name) {let matches = document.cookie.match(new RegExp("(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"));return matches ? decodeURIComponent(matches[1]) : undefined;
}let theme = getCookie('theme');
console.log(theme); // 输出: light// 删除 Cookie
document.cookie = "theme=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";

4. IndexedDB

IndexedDB 是一个低级的API,用于客户端存储大量结构化数据,包括文件/二进制对象。它提供了异步的、基于事务的API。

代码示例

javascript">// 打开(或创建)数据库
let request = indexedDB.open("myDatabase", 1);request.onupgradeneeded = function(event) {let db = event.target.result;// 创建一个新的对象存储(表)let objectStore = db.createObjectStore("customers", { keyPath: "id" });
};request.onsuccess = function(event) {let db = event.target.result;// 添加数据let transaction = db.transaction(["customers"], "readwrite");let objectStore = transaction.objectStore("customers");let request = objectStore.add({id: 1, name: "John Doe", age: 30, email: "john.doe@example.com"});request.onerror = function(event) {console.error("Error adding data: ", event.target.errorCode);};request.onsuccess = function(event) {console.log("Data added successfully");};// 获取数据let getRequest = objectStore.get(1);getRequest.onsuccess = function(event) {let customer = event.target.result;console.log(customer.name); // 输出: John Doe};transaction.oncomplete = function(event) {db.close();};
};request.onerror = function(event) {console.error("Database error: ", event.target.errorCode);
};

总结

选择哪种存储机制取决于你的具体需求。localStoragesessionStorage 是最简单的选择,适用于存储小量数据。Cookies 则更多地用于跨请求保持会话状态。而 IndexedDB 提供了更强大的功能,适用于需要存储大量结构化数据的场景。

课程推荐

诚邀你关注我的精品视频课程《ChatGPT+AI项目实战,打造多端智能虚拟数字人》。
课程以项目实战的方式,基于ChatGPT完成多端全栈式开发,实现AI绘画、智能语音、数字虚拟人等,从0到1手把手带你打造一个专属对话虚拟人。通过语音唤醒、识别及合成、安卓开发、前后端快速搭建等技术,使你具备将AI技术真实落地工作中,高效快速提高自身核心竞争力。
在这里插入图片描述


http://www.ppmy.cn/server/128187.html

相关文章

fiddler抓包18-2_导出jmeter、postman脚本(带请求头)

课程大纲 1. Fiddler导出请求为curl脚本 选中请求,“文件” - “导出会话” - “选中的会话” - “cURL Script”。 2. 导入jmeter ① 复制curl脚本。 ② 打开jmeter,“工具” - “import from cURL”,粘贴脚本,勾选“Add cooki…

ctf.bugku-备份是个好习惯

访问页面得到字符串 这串字符串是重复的; d41d8cd98f00b204e9800998ecf8427e 从前端、源码上看,除了这段字符串,没有其他信息;尝试解密,长度32位;各种解密方式试试; MD5免费在线解密破解_MD5在…

GitLab CI/CD脚本入门

工作中第一次用到gitlab自带的cicd, 记录一下备忘 GitLab CI/CD 配置文件 (.gitlab-ci.yml) 中有许多关键字,用于定义不同的行为和阶段。以下是一些常见且重要的关键字: 全局和 job 特定关键字 image 指定运行 CI job 时的 Docker 镜像。 im…

SSL证书申请流程

SSL证书申请流程 文章目录 SSL证书申请流程一、我使用的步骤二、Nginx配置Https缺少SSL模块(已解决)其他参考 一、我使用的步骤 链接: 参考步骤 注意1:里面的注册连接地址用 https://letsencrypt.osfipin.com/ 二、Nginx配置Https缺少SSL模块(已解决) 链接: Ngin…

Pikachu- SQL Inject - http header 头注入

header 头注入,是一种场景;跟以往的没区别,只是发生在 header 响应头; 有些时候,后台开发人员为了验证客户端头信息(比如常用的cookie验证),或者通过http header头信息获取客户端的一些信息,比…

计算机毕业设计 校内跑腿业务系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

力扣刷题 | 两数之和

目前主要分为三个专栏,后续还会添加: 专栏如下: C语言刷题解析 C语言系列文章 我的成长经历 感谢阅读! 初来乍到,如有错误请指出,感谢! 给定一个整数数组 nums 和…

【数据库】 MongoDB 用户分配新的角色和权限

在 MongoDB 中,可以通过简单的命令为用户分配新的角色和权限。这对于调整用户的访问能力和管理数据库安全至关重要。以下是如何为用户分配新的角色和权限的详细步骤。 1. 使用 MongoDB Shell 分配角色 1.1 修改用户角色 要为现有用户分配新的角色,可以…