QQ登录

只需要一步,快速开始

APP扫码登录

只需要一步,快速开始

手机号码,快捷登录

手机号码,快捷登录

查看: 291|回复: 0

[HTML/CSS/JS] localStorage 本地存储实践

[复制链接]

等级头衔

积分成就    金币 : 2841
   泡泡 : 1516
   精华 : 6
   在线时间 : 1294 小时
   最后登录 : 2024-11-21

丰功伟绩

优秀达人突出贡献荣誉管理论坛元老

联系方式
发表于 2023-7-17 08:41:20 | 显示全部楼层 |阅读模式
一、localStorage简单介绍% A4 i4 \4 o* ^8 y6 Y. b- H% ~. o
1、它是一种Web存储技术,允许在用户的浏览器中以键值对的形式存储数据。8 R9 ]9 s! J+ h! U, q7 u
2、它可将第一次请求的数据直接存储到本地,相比于cookie可以节约带宽。可以相当于一个前端页面数据库(约5M)。
) z8 c3 }5 Z& v0 n% H3、它突破了cookie的4K限制,解决了cookie存储空间不足的问题。& ~9 a4 o* |% s4 @' u/ q
4、localStorage数据可以直接获取,减少了客户端和服务器端的交互。; Z- t% S2 e2 ~2 n
5、localStorage中的数据不会随每个HTTP请求发送到服务器。( ]" N7 G2 w6 V$ a
6、localStorage数据会持久保存,除非用户手动清除或者网站代码删除。3 v7 K& m5 U' w, ^5 n) ]
7、localStorage遵循同源策略,这意味着只有与数据存储在相同协议、域名和端口的网页才能访问这些数据。
; q# x) [0 p& f! s1 K8、安全性相比于Cookie较弱,因为localStorage数据可以通过JavaScript访问。
" d2 d9 K* K9 u) r( @7 j) a二、localStorage小例2 k! T, @! B3 I' b. ?
a基于localStorage以上特点,下面用js简单写了一个本地“网址导航”页面,以验证在没有服务器和数据库的情况下,用户也可以借助localStorage实现对复杂数据的添加、存储、读取、清除等操作(也可以修改操作略)。1 Y  B! i, t/ C( n3 J* l6 b
  1. <!DOCTYPE html>
  2. <html>
  3.   <head>
  4.     <meta charset="UTF-8">
  5.     <title>localStorage 本地存储</title>
  6.   </head>
  7.   <style>
  8.      body { padding:0; margin:0; font-size:14px;}
  9.      ul, li { list-style:none; margin:0; padding:0;}
  10.      a { text-decoration:none;}
  11.      #url,#name{width: 280px; height:30px; text-align: center;font-size:14px;margin-top: 15px;}     
  12.      *{font-family:'Helvetica Neue', Helvetica, Arial, sans-serif; margin: 0px;padding:0px; }
  13.      .box{ margin: 0 auto; text-align: center; margin-top: 30px;width: 1300px;overflow: hidden; border: 1px solid #E9E9E9;padding-bottom: 20px;}
  14.      .box h3{ line-height: 45px; font-size: 18px;text-align: left;text-indent: 15px; border-bottom: 1px solid #E9E9E9;}
  15.      .box ul{ display: block;padding:20px;overflow: hidden;}
  16.      .box span{ font-weight:bold;}
  17.      #daohang li{float: left;width: 13.4%;text-align: center;line-height: 40px;margin: 2px;}
  18.      #daohang li a { color:#666; display:block;}
  19.      #daohang li a:hover { color:#666;}
  20.      #daohang li:hover { background:#f6f6f6;}
  21.      .btn{ width: 160px;; margin-top: 15px; font-size:20px; border:none; height: 40px; background-color:#0492de; color: #fff; cursor: pointer;font-weight:bold;}
  22.      .btnB{background-color:#d00c0c; }  
  23. </style>
  24. <body>
  25. <div class="box">
  26.    <h3>我的网址导航</h3>
  27.    <ul id="daohang"></ul>
  28. </div>
  29. <div class="box">
  30.   <h3>请添加您的网站</h3>
  31.   <span>网站名称:</span><input type="text" id="name"> </br>
  32.   <span>网站地址:</span><input type="text" id="url"></br>
  33.   <input type="button" value="添加" onclick="add()" class="btn"> <input type="button" value="清除" onclick="del()" class="btn btnB">
  34. </div>
  35. </body>
  36. </html>
  1. <script>
  2.    window.onload = function() {
  3.        var getLocalData = localStorage.getItem('localData');
  4.        showLocalData(getLocalData);
  5.    }
  6.    //输出本地存储数据
  7.    function showLocalData(getLocalData) {
  8.        if (getLocalData == null) {
  9.            var getLocalData = [];
  10.            setLocalData(getLocalData);
  11.        } else {
  12.            var jsonObj = JSON.parse(getLocalData);
  13.            for (var i = 0; i < jsonObj.length; i++) {
  14.                var msg = document.getElementById("daohang");
  15.                msg.innerHTML += "<li><a target='_blank'  href='" + jsonObj[i].url + "'>" + jsonObj[i].name + "</a></li>";
  16.            }
  17.        }
  18.    }
  19.    //增加指定的本地存储数据
  20.    function add() {
  21.        var getLocalData = localStorage.getItem('localData');
  22.        getLocalData = eval('(' + getLocalData + ')');
  23.        var name = document.getElementById('name').value;
  24.        var url = document.getElementById('url').value;
  25.        //数据非空验证,其他验证略
  26.        if(!isNull(name)&&!isNull(url)){
  27.            var arr = {
  28.                "name": name,
  29.                "url": url
  30.            };
  31.            getLocalData.push(arr);
  32.            setLocalData(getLocalData);
  33.            alert("添加成功!");
  34.            location.reload();
  35.         }else{
  36.             alert("数据不能空");
  37.             return false;
  38.         }   
  39.    }
  40.    //创建本地存储数据
  41.    function setLocalData(getLocalData) {
  42.        var strJsonData = JSON.stringify(getLocalData);
  43.        localStorage.setItem('localData', strJsonData);
  44.    }
  45.    
  46.    //删除指定的本地存储数据
  47.    function del() {
  48.        localStorage.removeItem('localData');
  49.        alert("清除成功!");
  50.        location.reload();
  51.    }
  52.   //数据值为空判断
  53.   function isNull(val){      
  54.        return (val =="" || val == undefined || val == null) ? 1 : 0;
  55.    }
  56. </script>
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|paopaomj.COM ( 渝ICP备18007172号|渝公网安备50010502503914号 )

GMT+8, 2024-11-21 19:47

Powered by paopaomj X3.5 © 2016-2025 sitemap

快速回复 返回顶部 返回列表