设为首页收藏本站
查看: 3090|回复: 0

[前端开发] 015 HTML5详解(四)

[复制链接]
  • TA的每日心情
    开心
    2024-1-13 00:31
  • 签到天数: 535 天

    [LV.9]以坛为家II

    发表于 2021-9-15 21:15:39 | 显示全部楼层 |阅读模式
    Web 存储

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

    H5 中有两种存储的方式

    1、window.sessionStorage 会话存储:

    - 保存在内存中。

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

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


    2、window.localStorage 本地存储:

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

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

    - 可以多窗口共享。


    Web 存储的特性

    (1)设置、读取方便。

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

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


    常见 API

    设置存储内容:

    1. setItem(key, value);
    复制代码


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

    读取存储内容:

    1. getItem(key);
    复制代码


    根据键,删除存储内容:

    1. removeItem(key);
    复制代码


    清空所有存储内容:

    1. clear();
    复制代码


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

    1. key(n);
    复制代码


    sessionStorage 的 API 举例:

    1. <!DOCTYPE html>
    2. <html>
    3. <head lang="en">
    4.     <meta charset="UTF-8">
    5.     <title></title>
    6. </head>
    7. <body>
    8. <input type="text"/>
    9. <button>sesssionStorage存储</button>
    10. <button>sesssionStorage获取</button>
    11. <button>sesssionStorage更新</button>
    12. <button>sesssionStorage删除</button>
    13. <button>sesssionStorage清除</button>
    14. <script>

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

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

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

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

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

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

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

    38.     //        sessionStorage清空数据
    39.     btns[4].onclick = function () {
    40.         window.sessionStorage.clear();
    41.     }
    42. </script>
    43. </body>
    44. </html>
    复制代码


    效果如下:



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

    localStorage 的 API 举例:

    1. <!DOCTYPE html>
    2. <html>
    3. <head lang="en">
    4.     <meta charset="UTF-8">
    5.     <title></title>
    6. </head>
    7. <body>
    8. <input type="text"/>
    9. <button>localStorage存储</button>
    10. <button>localStorage获取</button>
    11. <button>localStorage更新</button>
    12. <button>localStorage删除</button>
    13. <button>localStorage清除</button>

    14. <script>

    15.     /*
    16.     *  localStorage
    17.     *  数据存在硬盘上
    18.     *  永久生效
    19.     *  20M
    20.     * */

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

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

    27.     //        localStorage存储数据
    28.     btns[1].onclick = function () {
    29.         txt.value = window.localStorage.getItem('userName');
    30.     }

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

    35. </script>
    36. </body>
    37. </html>
    复制代码


    案例:记住用户名和密码

    代码:

    1. <!DOCTYPE html>
    2. <html>
    3. <head lang="en">
    4.     <meta charset="UTF-8">
    5.     <title></title>
    6. </head>
    7. <body>
    8. <label for="">
    9.     用户名:<input type="text" class="userName"/>
    10. </label>
    11. <br/><br/>
    12. <label for="">
    13.     密 码:<input type="text" class="pwd"/>
    14. </label>
    15. <br/><br/>
    16. <label for="">
    17.     <input type="checkbox" class="check" id=""/>记住密码
    18. </label>
    19. <br/><br/>
    20. <button>登录</button>

    21. <script>
    22.     var userName = document.querySelector('.userName');
    23.     var pwd = document.querySelector('.pwd');
    24.     var chk = document.querySelector('.check');
    25.     var btn = document.querySelector('button');

    26.     //        当点击登录的时候 如果勾选“记住密码”,就存储密码;否则就清除密码
    27.     btn.onclick = function () {
    28.         if (chk.checked) {
    29. //                记住数据
    30.             window.localStorage.setItem('userName', userName.value);
    31.             window.localStorage.setItem('pwd', pwd.value);
    32.         } else {
    33. //                清除数据
    34.             window.localStorage.removeItem('userName');
    35.             window.localStorage.removeItem('pwd');
    36.         }
    37.     }
    38.     //        下次登录时,如果记录的有数据,就直接填充
    39.     window.onload = function () {
    40.         userName.value = window.localStorage.getItem('userName');
    41.         pwd.value = window.localStorage.getItem('pwd');

    42.     }
    43. </script>
    44. </body>
    45. </html>
    复制代码



    网络状态

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

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

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

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

    1. <!DOCTYPE html>
    2. <html>
    3. <head lang="en">
    4.     <meta charset="UTF-8">
    5.     <title></title>
    6. </head>
    7. <body>
    8. <script>
    9.     window.addEventListener('online', function () {
    10.         alert('网络连接建立!');
    11.     });

    12.     window.addEventListener('offline', function () {
    13.         alert('网络连接断开!');
    14.     })
    15. </script>
    16. </body>
    17. </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:

    bash
    CACHE MANIFEST

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


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


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




    缓存清单文件怎么用:

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

    demo.appcache:

    bash
    CACHE MANIFEST

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



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

    1. <!DOCTYPE html>
    2. <html manifest="01.appcache">
    3. <head lang="en">
    4.     <meta charset="UTF-8">
    5.     <title></title>
    6. </head>
    7. <body>
    8. <img src="http://img.smyhvae.com/2016040101.jpg" alt=""/>
    9. </body>
    10. </html>
    复制代码

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    红盟社区--红客联盟 

    Processed in 0.062747 second(s), 21 queries.

    站点统计| 举报| Archiver| 手机版| 黑屋 |   

    备案号:冀ICP备20006029号-1 Powered by HUC © 2001-2021 Comsenz Inc.

    手机扫我进入移动触屏客户端

    关注我们可获取更多热点资讯

    Honor accompaniments. theme macfee

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