千古前端图文教程-HTML010-HTML5详解3

HTML5详解3

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 举例:


sesssionStorage存储
sesssionStorage获取
sesssionStorage更新
sesssionStorage删除
sesssionStorage清除

    //在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();
    }

效果如下:

千古前端图文教程-HTML010-HTML5详解3

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

localStorage 的 API 举例:


localStorage存储
localStorage获取
localStorage更新
localStorage删除
localStorage清除

    /*
    *  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');
    }

千古前端图文教程-HTML010-HTML5详解3

案例:记住用户名和密码

代码:


    用户名:

    密 码:

    记住密码

登录

    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');

    }

千古前端图文教程-HTML010-HTML5详解3

网络状态

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

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

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


    window.addEventListener('online', function () {
        alert('网络连接建立!');
    });

    window.addEventListener('offline', function () {
        alert('网络连接断开!');
    })

应用缓存

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

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

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

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

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

# cache manifest 缓存清单文件

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

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

(1)顶行写CACHE MANIFEST。

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

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

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

格式举例1:

千古前端图文教程-HTML010-HTML5详解3

格式举例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”。路径要保证正确。例如:


Original: https://www.cnblogs.com/BEMAKE/p/16479094.html
Author: 271374667
Title: 千古前端图文教程-HTML010-HTML5详解3

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/685749/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 双绞线

    双绞线简介 双绞线(twisted pair,TP)是一种综合布线工程中最常用的传输介质,双绞线一般由两根22~26号绝缘铜导线相互缠绕而成,在一个电缆套管里的,不同线对具有不同的…

    技术杂谈 2023年7月11日
    068
  • 什么是root帐户?

    root帐户就像一个系统管理员帐户,允许你完全控制系统。你可以在此处创建和维护用户帐户,为每个帐户分配不同的权限。每次安装Linux时都是默认帐户。 Java Program! O…

    技术杂谈 2023年5月31日
    078
  • 快速排序及优化

    快速排序 每次从当前考虑的数组中选一个元素,把这个元素想办法挪到应该排好序的位置,比如 4这个元素,它就有一个性质 4之前的元素都是小于它的,之后的元素都是大于它的,之后我们要做的…

    技术杂谈 2023年7月23日
    081
  • mysql时间相减获取秒数

    ans time_to_sec(timediff(endTime, startTime)) timestampdiff(second, startTime, endTime) un…

    技术杂谈 2023年7月24日
    080
  • zz

    http://36kr.com/p/5103094.html Original: https://www.cnblogs.com/lexus/p/7867129.htmlAutho…

    技术杂谈 2023年5月31日
    0118
  • 小程序太阳码 ,不发布也可以测试

    /** * 获取小程序太阳…

    技术杂谈 2023年5月31日
    082
  • seaborn学习笔记(二):散点图、线图

    作者:奥辰 微信号:chb1137796095 Github:https://github.com/ChenHuabin321 欢迎加V交流,共同学习,共同进步! 本文版权归作者和…

    技术杂谈 2023年7月24日
    088
  • EMAS Serverless系列~4步教你快速搭建小程序

    体验简介 本实验基于 EMAS Serverless 的云函数、云数据库、云存储等云服务能力一站式快速开发小程序《私人云相册》。Demo 主要包括如下功能:1 相册管理2 上传相片…

    技术杂谈 2023年7月10日
    088
  • Rust:axum学习笔记(4) 上传文件

    接上一篇继续,上传文件是 web开发中的常用功能,本文将演示axum如何实现图片上传(注:其它类型的文件原理相同),一般来说要考虑以下几个因素: 文件上传的大小限制 文件上传的类型…

    技术杂谈 2023年5月31日
    093
  • Java8 Stream 的最佳实践

    java8stream提供了对于集合类的流失处理,其具有以下特点: Lazy Evaluation(长度可以无限) 只能使用一次 内部迭代 Lazy Evaluation类似函数式…

    技术杂谈 2023年7月24日
    056
  • SQL语句之if,case

    其他函数 、 case 语句 聚合函数max() , min() , avg() , sum() , count () if( bool表达式 , expr1 , expr2 )如…

    技术杂谈 2023年7月25日
    087
  • 使用MindSpore计算旋转矩阵

    坐标变换、旋转矩阵,是在线性空间常用的操作,在分子动力学模拟领域有非常广泛的应用。比如在一个体系中切换坐标,或者对整体分子进行旋转平移等。如果直接使用Numpy,是很容易可以实现的…

    技术杂谈 2023年7月25日
    055
  • mybatis学习笔记(一)for 概念

    mybaits相关概念 1.1 mybatis简介 mybatis是是一款优秀的基于ORM的半自动轻量级持久层框架,它支持定制化SQL、存储过程以及高级映射。(与另一基于ORM的持…

    技术杂谈 2023年7月11日
    060
  • 看了这么多年西游记,你可知道孙悟空是如何召唤土地公公的吗?

    小时候最开心的事莫过于躺在沙发上看《西游记》了。大闹天宫、三打白骨精、真假美猴王……一幕幕精彩的故事萦绕脑海,现在想来,回味无穷。 不知道你有没有注意到这个…

    技术杂谈 2023年7月11日
    081
  • HTTP协议和SOCKS5协议

    博客园 :当前访问的博文已被密码保护 请输入阅读密码: Original: https://www.cnblogs.com/panxuejun/p/10584993.htmlAut…

    技术杂谈 2023年5月30日
    081
  • 排查 Kubernetes 集群无法加入 control-plane 的问题

    使用下面的命令将 kube-master1 作为 control-plane 加入 k8s 集群 kubeadm join k8s-api:6443 \ –token *****…

    技术杂谈 2023年5月31日
    087
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球