前端(二):浏览器本地存储 - cookie、localStorage、sessionStorage

简介: 浏览器本地存储 - cookie、localStorage、sessionStorage

cookie存储

  • cookie若不设置过期时间关闭浏览器后会自动清除数据
  • 存储限制4k
  • 同地址下其他文件也能读取到
    <form action="">
      用户名:<input type="text" id="username" value="" /> 
      密码:<input type="password" id="userpassword" value="" />
      <input type="checkbox" id="remember" onclick="rememberValue(this)">
      <label for="remember">记住账号密码</label>
    </form>
    
    ```js
    /**
    • cookie用字符串拼接即可
    • cookie后可接
    • ; path=path
    • ; domain=domain
    • ; secure
      */

/**

  • [setCookie 设置cookie]
  • @param {[String]} c_name [起个名,独一无二的名字]
  • @param {[String]} c_value [需要存的值]
  • @param {[Number]} exdays [时间/天数,设置保存时间 0时为删除]
    /
    function setCookie(c_name, c_value, exdays) {
    document.cookie = c_name + "=" + encodeURIComponent(c_value) + "; max-age=" + (exdays
    606024);// 解决符号转码
    }

/**

  • 读取cookies
  • @param {[String]} c_name [读取名字]
  • @return {[String]} [返回读取cookie的值]
    */
    function getCookie(c_name) {
    var name = c_name + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
     var c = decodeURIComponent(ca[i].trim());// 解码
     if (c.indexOf(name) == 0){
         return c.substring(name.length, c.length);
     }
    
    }
    return "";
    }

// 使用示例
var username = document.getElementById("username"); // 获取input username
var userpwd = document.getElementById("userpassword"); // 获取input userpassword
var remember = document.getElementById("remember"); // 获取记住账号密码

/**

  • 点击复选框记住 账号、密码、复选框
    */
    function rememberValue() {
    if (remember.checked == true) {
     setCookie('user', username.value);// 临时
     setCookie('pwd', userpwd.value, 30);
     setCookie('remember', remember.checked, 30);
    
    } else {
     setCookie("user","",0);
     setCookie("pwd","",0);
     setCookie("remember","",0);
    
    }
    }

/**

  • 页面加载完毕后从cookie里读取值并填入相应的标签内
    */
    window.onload = function () {
    username.value = getCookie("user");
    userpwd.value = getCookie("pwd");
    remember.checked = getCookie("remember");
    }
    ```

localStorage存储

  • 存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在5MB以下。
  • localStorage与sessionStorage的区别:就是localStorage属于永久性存储,而sessionStorage属于当会话结束的时候,sessionStorage中的键值对会被清空
  • 关闭浏览器后,再打开仍有数据
  • 清除缓存加载后仍有数据
  • 同网络地址页面均能得到数据
    <form action="">
      用户名:
      <input type="text" id="username" value="" /> 密码:
      <input type="password" id="userpassword" value="" />
      <input type="checkbox" id="remember" onclick="rememberValue(this)">
      <label for="remember">记住账号密码</label>
    </form>
    
    // localStorage使用示例
    var username = document.getElementById("username"); // 获取input username
    var userpwd = document.getElementById("userpassword"); // 获取input userpassword
    var remember = document.getElementById("remember"); // 获取记住账号密码
    // 点击复选框记住 账号、密码、复选框
    function rememberValue() {
         
      if (remember.checked == true) {
         
          localStorage.setItem('user', username.value);
          localStorage.setItem('pwd', userpwd.value);
          localStorage.setItem('remember', remember.checked);
      } else {
         
          localStorage.removeItem("user");
          localStorage.removeItem("pwd");
          localStorage.removeItem("remember");
          // localStorage.clear();// 全部删除
      }
    }
    // 页面加载完毕后从localStorage里读取值并填入相应的标签内
    window.onload = function () {
         
      username.value = localStorage.getItem("user");
      userpwd.value = localStorage.getItem("pwd");
      remember.checked = localStorage.getItem("remember");
    }
    

sessionStorage存储

  • 关闭浏览器再打开将不保存数据
  • 复制标签页会连同sessionStorage数据一同复制
  • 复制链接地址打开网页不会复制seessionStorage内的数据
  • 清除缓存加载当前页对页面无影响
  1. 同源策略限制。若想在不同页面之间对同一个sessionStorage进行操作,这些页面必须在同一协议、同一主机名和同一端口下。(IE 8和9存储数据仅基于同一主机名,忽略协议(HTTP和HTTPS)和端口号的要求)
  2. 单标签页限制。sessionStorage操作限制在单个标签页中,在此标签页进行同源页面访问都可以共享sessionStorage数据。
  3. 只在本地存储。seesionStorage的数据不会跟随HTTP请求一起发送到服务器,只会在本地生效,并在关闭标签页后清除数据。(若使用Chrome的恢复标签页功能,seesionStorage的数据也会恢复)。
  4. 存储方式。seesionStorage的存储方式采用key、value的方式。value的值必须为字符串类型(传入非字符串,也会在存储时转换为字符串。true值会转换为"true")。
  5. 存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在5MB以下。
<form action="">
    用户名:
    <input type="text" id="username" value="" /> 密码:
    <input type="password" id="userpassword" value="" />
    <input type="checkbox" id="remember" onclick="rememberValue(this)">
    <label for="remember">记住账号密码</label>
</form>
// sessionStorage使用示例
var username = document.getElementById("username"); // 获取input username
var userpwd = document.getElementById("userpassword"); // 获取input userpassword
var remember = document.getElementById("remember"); // 获取记住账号密码
// 点击复选框记住 账号、密码、复选框
function rememberValue() {
   
    if (remember.checked == true) {
   
        sessionStorage.setItem('user', username.value);
        sessionStorage.setItem('pwd', userpwd.value);
        sessionStorage.setItem('remember', remember.checked);
    } else {
   
        sessionStorage.removeItem("user");
        sessionStorage.removeItem("pwd");
        sessionStorage.removeItem("remember");
        // sessionStorage.clear();// 全部删除
    }
}
// 页面加载完毕后从sessionStorage里读取值并填入相应的标签内
window.onload = function () {
   
    username.value = sessionStorage.getItem("user");
    userpwd.value = sessionStorage.getItem("pwd");
    remember.checked = sessionStorage.getItem("remember");
}

测试浏览器的存储上限

http://dev-test.nemikor.com/web-storage/support-test/

目录
相关文章
|
28天前
|
存储 人工智能 前端开发
前端大模型应用笔记(三):Vue3+Antdv+transformers+本地模型实现浏览器端侧增强搜索
本文介绍了一个纯前端实现的增强列表搜索应用,通过使用Transformer模型,实现了更智能的搜索功能,如使用“番茄”可以搜索到“西红柿”。项目基于Vue3和Ant Design Vue,使用了Xenova的bge-base-zh-v1.5模型。文章详细介绍了从环境搭建、数据准备到具体实现的全过程,并展示了实际效果和待改进点。
118 2
|
9天前
|
前端开发 JavaScript API
前端开发的秘密花园:这些技巧让你轻松应对各种浏览器兼容性问题!
【10月更文挑战第31天】前端开发是一个充满创意与挑战的领域,追求极致用户体验的同时,浏览器兼容性问题却时常阻碍我们前进。本文将介绍几种解决浏览器兼容性的最佳实践:使用CSS前缀、Autoprefixer工具、现代JavaScript特性与Babel转译、Polyfill与Feature Detection、响应式设计以及跨域问题处理。掌握这些技巧,助你轻松应对各种兼容性难题,创建更稳定、用户友好的网页应用。
21 3
|
8天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
17天前
|
缓存 前端开发 JavaScript
"面试通关秘籍:深度解析浏览器面试必考问题,从重绘回流到事件委托,让你一举拿下前端 Offer!"
【10月更文挑战第23天】在前端开发面试中,浏览器相关知识是必考内容。本文总结了四个常见问题:浏览器渲染机制、重绘与回流、性能优化及事件委托。通过具体示例和对比分析,帮助求职者更好地理解和准备面试。掌握这些知识点,有助于提升面试表现和实际工作能力。
51 1
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端大模型入门:Transformer.js 和 Xenova-引领浏览器端的机器学习变革
除了调用API接口使用Transformer技术,你是否想过在浏览器中运行大模型?Xenova团队推出的Transformer.js,基于JavaScript,让开发者能在浏览器中本地加载和执行预训练模型,无需依赖服务器。该库利用WebAssembly和WebGPU技术,大幅提升性能,尤其适合隐私保护、离线应用和低延迟交互场景。无论是NLP任务还是实时文本生成,Transformer.js都提供了强大支持,成为构建浏览器AI应用的核心工具。
396 1
|
21天前
|
NoSQL 前端开发 MongoDB
前端的全栈之路Meteor篇(三):运行在浏览器端的NoSQL数据库副本-MiniMongo介绍及其前后端数据实时同步示例
MiniMongo 是 Meteor 框架中的客户端数据库组件,模拟了 MongoDB 的核心功能,允许前端开发者使用类似 MongoDB 的 API 进行数据操作。通过 Meteor 的数据同步机制,MiniMongo 与服务器端的 MongoDB 实现实时数据同步,确保数据一致性,支持发布/订阅模型和响应式数据源,适用于实时聊天、项目管理和协作工具等应用场景。
|
28天前
|
存储 前端开发 API
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
前端开发中,Web Storage的存储数据的方法localstorage和sessionStorage的使用及区别
88 0
|
2月前
|
存储 编解码 JSON
解决浏览器存储问题,不得不了解的cookie、localStorage和sessionStorage
该文章详细对比了浏览器存储机制中的cookie、localStorage和sessionStorage的不同之处,以及各自的适用场景。
|
3月前
|
机器学习/深度学习 存储 前端开发
实战揭秘:如何借助TensorFlow.js的强大力量,轻松将高效能的机器学习模型无缝集成到Web浏览器中,从而打造智能化的前端应用并优化用户体验
【8月更文挑战第31天】将机器学习模型集成到Web应用中,可让用户在浏览器内体验智能化功能。TensorFlow.js作为在客户端浏览器中运行的库,提供了强大支持。本文通过问答形式详细介绍如何使用TensorFlow.js将机器学习模型带入Web浏览器,并通过具体示例代码展示最佳实践。首先,需在HTML文件中引入TensorFlow.js库;接着,可通过加载预训练模型如MobileNet实现图像分类;然后,编写代码处理图像识别并显示结果;此外,还介绍了如何训练自定义模型及优化模型性能的方法,包括模型量化、剪枝和压缩等。
49 1
|
3月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
78 0