首页 > 其他分享 >11-HTML5详解(三)

11-HTML5详解(三)

时间:2023-04-20 12:46:00浏览次数:42  
标签:11 userName 存储 缓存 sessionStorage window 详解 localStorage HTML5

title: 11-HTML5详解(三)
publish: true

Web 存储

随着互联网的快速发展,基于网页的应用越来越普遍,同时也变的越来越复杂,为了满足各种各样的需求,会经常性在本地存储大量的数据,传统方式我们以document.cookie来进行存储的,但是由于其存储大小只有4k左右,并且解析也相当的复杂,给开发带来诸多不便,HTML5规范则提出解决方案。

H5 中有两种存储的方式

1、window.sessionStorage 会话存储:

  • 保存在内存中。

  • 生命周期为关闭浏览器窗口。也就是说,当窗口关闭时数据销毁。

  • 在同一个窗口下数据可以共享。

2、window.localStorage 本地存储

  • 有可能保存在浏览器内存里,有可能在硬盘里。

  • 永久生效,除非手动删除(比如清理垃圾的时候)。

  • 可以多窗口共享。

Web 存储的特性

(1)设置、读取方便。

(2)容量较大,sessionStorage 约5M、localStorage 约20M。

(3)只能存储字符串,可以将对象 JSON.stringify() 编码后存储。

常见 API

设置存储内容:

	setItem(key, value);

PS:可以新增一个 item,也可以更新一个 item。

读取存储内容:

	getItem(key);

根据键,删除存储内容:

	removeItem(key);

清空所有存储内容:

	clear();

根据索引值来获取存储内容:

	key(n);

sessionStorage 的 API 举例:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<input type="text"/>
<button>sesssionStorage存储</button>
<button>sesssionStorage获取</button>
<button>sesssionStorage更新</button>
<button>sesssionStorage删除</button>
<button>sesssionStorage清除</button>
<script>

    //在h5中提供两种web存储方式

    // sessionStorage  session(会话,会议) 5M  当窗口关闭是数据销毁  内存
    // localStorage    20M 永久生效 ,除非手动删除  清理垃圾  硬盘上

    var txt = document.querySelector('input');

    var btns = document.querySelectorAll('button');
    //        sessionStorage存储数据
    btns[0].onclick = function () {
        window.sessionStorage.setItem('userName', txt.value);
        window.sessionStorage.setItem('pwd', '123456');
        window.sessionStorage.setItem('age', 18);
    }

    //        sessionStorage获取数据
    btns[1].onclick = function () {
        txt.value = window.sessionStorage.getItem('userName');
    }

    //        sessionStorage更新数据
    btns[2].onclick = function () {
        window.sessionStorage.setItem('userName', txt.value);
    }

    //        sessionStorage删除数据
    btns[3].onclick = function () {
        window.sessionStorage.removeItem('userName');
    }

    //        sessionStorage清空数据
    btns[4].onclick = function () {
        window.sessionStorage.clear();
    }
</script>
</body>
</html>

效果如下:

如上图所示,我们可以在 Storage 选项卡中查看 Session Storage 和Local Storage。

localStorage 的 API 举例:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<input type="text"/>
<button>localStorage存储</button>
<button>localStorage获取</button>
<button>localStorage更新</button>
<button>localStorage删除</button>
<button>localStorage清除</button>

<script>

    /*
    *  localStorage
    *  数据存在硬盘上
    *  永久生效
    *  20M
    * */

    var txt = document.querySelector('input');
    var btns = document.querySelectorAll('button');

    // localStorage存储数据
    btns[0].onclick = function () {
        window.localStorage.setItem('userName', txt.value);
    }

    // localStorage获取数据
    btns[1].onclick = function () {
        txt.value = window.localStorage.getItem('userName');
    }

    // localStorage删除数据
    btns[3].onclick = function () {
        window.localStorage.removeItem('userName');
    }

</script>
</body>
</html>

案例:记住用户名和密码

代码:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<label for="">
    用户名:<input type="text" class="userName"/>
</label>
<br/><br/>
<label for="">
    密 码:<input type="text" class="pwd"/>
</label>
<br/><br/>
<label for="">
    <input type="checkbox" class="check" id=""/>记住密码
</label>
<br/><br/>
<button>登录</button>

<script>
    var userName = document.querySelector('.userName');
    var pwd = document.querySelector('.pwd');
    var chk = document.querySelector('.check');
    var btn = document.querySelector('button');

    //        当点击登录的时候 如果勾选“记住密码”,就存储密码;否则就清除密码
    btn.onclick = function () {
        if (chk.checked) {
//                记住数据
            window.localStorage.setItem('userName', userName.value);
            window.localStorage.setItem('pwd', pwd.value);
        } else {
//                清除数据
            window.localStorage.removeItem('userName');
            window.localStorage.removeItem('pwd');
        }
    }
    //        下次登录时,如果记录的有数据,就直接填充
    window.onload = function () {
        userName.value = window.localStorage.getItem('userName');
        pwd.value = window.localStorage.getItem('pwd');

    }
</script>
</body>
</html>

网络状态

我们可以通过 window.onLine 来检测用户当前的网络状况,返回一个布尔值。另外:

  • window.online:用户网络连接时被调用。

  • window.offline:用户网络断开时被调用(拔掉网线或者禁用以太网)。

网络状态监听的代码举例:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<script>
    window.addEventListener('online', function () {
        alert('网络连接建立!');
    });

    window.addEventListener('offline', function () {
        alert('网络连接断开!');
    })
</script>
</body>
</html>

应用缓存

HTML5中我们可以轻松的构建一个离线(无网络状态)应用,只需要创建一个 cache manifest 缓存清单文件。

优势

1、可配置需要缓存的资源;

2、网络无连接应用仍可用;

3、本地读取缓存资源,提升访问速度,增强用户体验;

4、减少请求,缓解服务器负担。

cache manifest 缓存清单文件

缓存清单文件中列出了浏览器应缓存,以供离线访问的资源。推荐使用 .appcache作为后缀名,另外还要添加MIME类型。

缓存清单文件里的内容怎样写:

(1)顶行写CACHE MANIFEST。

(2)CACHE: 换行 指定我们需要缓存的静态资源,如.css、image、js等。

(3)NETWORK: 换行 指定需要在线访问的资源,可使用通配符(也就是:不需要缓存的、必须在网络下面才能访问的资源)。

(4)FALLBACK: 换行 当被缓存的文件找不到时的备用资源(当访问不到某个资源时,自动由另外一个资源替换)。

格式举例1:

格式举例2:

CACHE MANIFEST

#要缓存的文件
CACHE:
    images/img1.jpg
    images/img2.jpg


#指定必须联网才能访问的文件
NETWORK:
     images/img3.jpg
     images/img4.jpg


#当前页面无法访问是回退的页面
FALLBACK:
    404.html

缓存清单文件怎么用:

(1)例如我们创建一个名为 demo.appcache的文件。例如:

demo.appcache:

CACHE MANIFEST

# 注释以#开头
#下面是要缓存的文件
CACHE:
    http://img.smyhvae.com/2016040101.jpg

(2)在需要应用缓存在页面的根元素(html)里,添加属性manifest="demo.appcache"。路径要保证正确。例如:

<!DOCTYPE html>
<html manifest="demo.appcache">
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<img src="http://img.smyhvae.com/2016040101.jpg" alt=""/>
</body>
</html>

标签:11,userName,存储,缓存,sessionStorage,window,详解,localStorage,HTML5
From: https://www.cnblogs.com/full-stack-linux-new/p/17336384.html

相关文章

  • hdparm命令详解:-bash: hdparm: 未找到命令
    一、安装软件[root@localhost~]#yuminstallhdparm-y二、说明作用:Linuxhdparm命令用于显示与设定硬盘的参数。hdparm可检测,显示与设定IDE或SCSI硬盘的参数。语法:hdparm[-CfghiIqtTvyYZ][-a<快取分区>][-A<0或1>][-c<I/O模式>][-d<0或1>][-k<0或1>][-K<0或......
  • 修路方案 118 (prim判断最小生成树的不唯一性)
    修路方案3000ms |          内存限制:655355南将军率领着许多部队,它们分别驻扎在N个不同的城市里,这些城市分别编号1~N,由于交通不太便利,南将军准备修路。现在已经知道哪些城市之间可以修路,如果修路,花费是多少。现在,军师小工已经找到了一种修路的方案,能够使各个......
  • Eddy's digital Roots 1163 (数学+九余数定理)
    Eddy'sdigitalRootsTimeLimit:2000/1000MS(Java/Others)   MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):5278   AcceptedSubmission(s):2952ProblemDescriptionThedigitalrootofapositiveintegerisfoundbysumming......
  • 【备忘录设计模式详解】C/Java/JS/Go/Python/TS不同语言实现
    简介备忘录模式(MementoPattern)是一种结构型设计模式。这种模式就是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并放在外部存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。备忘录模式的角色有三个......
  • Python 图像处理实用指南:11~12
    原文:Hands-OnImageProcessingwithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN计算机视觉译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。当别人说你没有底线的时候,你最好真的没有;当别人说你做过某些事的时候,你也最好真的做过。十一、深入学习图像处理——......
  • nginx location规则以及优先级详解
    nginx配置文件里往往有多个location来区分不同的路径来执行不同的配置 在nginx配置文件中,location主要有这几种形式:1、~#使用波浪符“~”区分大小写正则匹配,如location~/abc{}2、~*#不区分大小写的正则匹配,如location~*/abc{}3、^~#匹配路径的前缀,如......
  • 在JDK11中生成JRE11的方法
    从Java11开始,不再默认安装JRE,需要手工生成:以管理员身份启动cmd。注:如果没有管理员权限,就会因权限不够而导致生成失败。进入JDK11所在的目录的上一级目录:C:>cdc:\ProgramFiles\Java通过命令来生成JRE:jdk-11.0.19\bin\jlink.exe--module-pathjmods--add-modulesjava.d......
  • 二分查找:剑指 Offer 11. 旋转数组的最小数字
    题目描述:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。例如,数组 [3,4,5,1,2]为[1,2,3,4,5]的一次旋转,该数组的最......
  • 【Nginx】Nginx介绍及配置详解
    Nginx是什么Nginx("enginex")是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强。Nginx官网:http://nginx.org/Nginx安装Nginx官网下载地址:http://nginx.org/en/download.html其中nginx-1.23.4这一列是Linux版本。Windows安装解压Nginx压缩包后,目录如下:启动n......
  • Java中抽象类详解
    在编程领域中,抽象类是一种至关重要的概念。它可以让我们更好地进行模块化设计,提高代码的复用性和可扩展性。只有全面掌握抽象类,才能在编程世界中游刃有余、与众不同。让我们一起踏上抽象类的学习之旅,创造出更加优秀的程序吧。在Java中,抽象类是一种用于按需定制的基础类,它帮助开发者......