自学内容网 自学内容网

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

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

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

1. localStorage

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

代码示例

// 存储数据
localStorage.setItem('username', 'JohnDoe');

// 获取数据
let username = localStorage.getItem('username');
console.log(username); // 输出: JohnDoe

// 删除数据
localStorage.removeItem('username');

// 清除所有数据
// localStorage.clear();

2. sessionStorage

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

代码示例

// 存储数据
sessionStorage.setItem('sessionId', '12345');

// 获取数据
let sessionId = sessionStorage.getItem('sessionId');
console.log(sessionId); // 输出: 12345

// 注意:关闭页面会话后,该数据将不再可用
// 删除数据
// sessionStorage.removeItem('sessionId');

// 由于 sessionStorage 会随着页面会话的结束而自动清除,通常不需要手动清除所有数据
// 但如果你确实需要,可以使用 sessionStorage.clear();

3. Cookies

Cookies 是服务器发送到用户浏览器并存储在本地的一小块数据。它们通常用于跟踪用户会话、存储用户偏好设置等。尽管 Cookies 可以在客户端通过 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。

代码示例

// 打开(或创建)数据库
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技术真实落地工作中,高效快速提高自身核心竞争力。
在这里插入图片描述


原文地址:https://blog.csdn.net/luwei42768/article/details/142733648

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!