zoukankan      html  css  js  c++  java
  • web前端学习(二)html学习笔记部分(7)--web存储2

    1.2.20  web存储

    1.2.20.1  Web存储-客户端存储数据新方法

      1.两种方式

        1)localStorage - 没有时间限制的数据存储

        2)针对一个sessionStorage - 针对一个session的数据存储

      2.与cookie作对比

        之前,这些都是由cookie完成的,但是cookie不适合大量数据的存储,因为他们由每个对服务器的请求来传递,这使得cookie速率很慢效率也不高。

    1.2.20.2  Web存储-localStroage

      localStorage使用没有时间限制,不论多久之后都可以继续使用。

    <body>
    <script>
        var ta;
        var btn;
        window.onload = function () {
            ta = document.getElementById("ta");
            if (localStorage.text) {
                ta.value = localStorage.text;
            }
            btn = document.getElementById("btn");
            btn.onclick = function () {
                localStorage.text = ta.value;
            }
        /*
        * 上面三行文字如何放在window.onload外面的话会导致出现
        * Cannot set property 'onclick' of null的问题
        * 会出现这样的错误,是因为W3School的写法是浏览器先加载完按钮节点才执行的js,
        * 所以当浏览器自顶向下解析时,找不到onclick绑定的按钮节点,于是报错。
        * 因此,需要把js文件放在底部加载,就会避免该问题。或者放在window.onload中执行
        * window.onload表示页面加载完成后执行的函数,这样JS代码即使放在<head>中也可以完美实现效果。
        * */
        }
    
    </script>
    <textarea name="text" id="ta" cols="30" rows="10"></textarea>
    <button id="btn">save</button>
    </body>
    <!--<script src="js/app.js"></script>-->

    1.2.20.3  Web存储-sessionStroage

    sessionStorage方法针对一个session进行数据存储。当用户关闭浏览器窗口时session数据将被删除

    <script>
        var num = 0;
        var txt;
        var btn;
        window.onload = function(){
            txt = document.getElementById("txt");
            btn = document.getElementById("addbtn");
            if(sessionStorage.num){
                num = sessionStorage.num;
                showNum();
            }else{
                txt.innerText = 0;
            }
            btn.onclick = function(){
                num++;
                sessionStorage.num = num;
                showNum();
            }
        }
        function showNum(){
            txt.innerHTML = num;
        }
    </script>
    <span id="txt"></span>
    <button id="addbtn">Add</button>

    1.2.21  html5应用缓存与web workers

    1.2.21.1  应用缓存与webworkers

      1.什么是web worker

        web worker是运行在后台的JavaScript,独立于其他脚本,不会影响页面性能

      2.方法:

        postMessage() -- 它用于向HTML页面传回一短消息

        terminate()  -- 终止web worker,并释放浏览器/计算机资源

      3.事件:

        onmessage

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <script src="js/index.js"></script>
    <body>
    <div id="numDiv"></div>
    </body>
    </html>

    index.js

    var numDiv;
    window.onload = function(){
        numDiv = document.getElementById("numDiv");
    
        var work = new Worker("js/count.js");
        work.onmessage = function (e) {
            numDiv.innerHTML = e.data;
        }
    }

    count.js

    var countNum = 0;
    function count(){
        postMessage(countNum);
        countNum++;
        setTimeout(count,1000);
    }
    count();

    添加两个button按钮对其进行处理代码

    (注意全局变量不能再在函数中重新定义,否则会出现函数变量值不变的情况。)

    index.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <script src="js/index.js"></script>
    <body>
    <div id="numDiv">0</div>
    <button id="start">start</button>
    <button id="stop">stop</button>
    </body>
    </html>

    index.js

    var numDiv;
    var work = null;
    
    window.onload = function(){
        numDiv = document.getElementById("numDiv");
    
        document.getElementById("start").onclick = startWorker;
        document.getElementById("stop").onclick = function(){
            alert(work);
            if(work){
                alert(work);
                work.terminate();
                work = null;
            }
        }
    
    }
    function startWorker(){
        if(work){
            return;
        }
        work = new Worker("js/count.js");
        work.onmessage = function (e) {
            numDiv.innerHTML = e.data;
        }
        alert(work);
    }

    count.js

    var countNum = 0;
    function count(){
        postMessage(countNum);
        countNum++;
        setTimeout(count,1000);
    }
    count();

    1.2.21.2  应用缓存与webworkers -- webworks

    1.什么事应用程序缓存:

      html5引入了应用程序缓存,这意味着web应用可以进行缓存,并在没有因特网链接的时候可以进行访问

    2.应用缓存的优势:

      1)离线浏览 -- 用户可以在应用离线的时候使用它们

      2)速度 -- 已缓存资源加载地更快

      3)减少服务器负载 -- 浏览器只从服务器下载更新过或更改过的资源

    3.实现缓存

      如需启动应用程序缓存,请在文档的<html>标签中包含manifest属性,manifest文件的建议的文件扩展名是“.appcache”

    4.manifest文件

    1)CACHE MANIFEST  -- 在此标题下列出的文件将在首次下载之后进行缓存

    2)NETWORK -- 在此标题下列出的文件需要与服务器的连接,且不会被缓存

    3)FALLBACK -- 在此标题下列出的文件规定当前页面无法访问时的回退页面(比如404页面)

    index.html

    <!DOCTYPE html>
    <html manifest="index.appcache" lang="en" >
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
        <link rel="stylesheet" href="css/style.css" type="text/css">
        <script src="js/index.js"></script>
    </head>
    <body>
        <h1 class="h1">hello html5</h1>
    </body>
    </html>

    index.appcache

    CACHE MANIFEST
    
    CACHE:
    index.html
    css/style.css
    js/index.js

    css/style.css

    .h1{
        background-color: aqua;
    }

    js/index.js

    空*(没内容)

     在浏览器关闭内容之后会在本次计算机有缓存下来的内容。

    在这里出现了以下几个问题,原因是没有正常配置manifest文件的原因,具体可以在以后部署服务器的时候再详细研究

    GET http://localhost:8000/favicon.ico net::ERR_FAILED
    localhost/:1 Application Cache Error event: Manifest fetch failed (6) http://localhost:8000/webWorks/index.appcache

    http://localhost:8000/webWorks/

  • 相关阅读:
    debian8 vga 文本模式下出现闪屏
    Delphi中根据分类数据生成树形结构的最优方法
    SQL获取每月、每季度、每年的最后一天记录
    Delphi实现树型结构
    Delphi中initialization和finalization
    Delphi 连接 Paradox
    delphi2007单个文件(pas)的控件安装
    Delphi安装*.pas扩展名的控件
    数据库组件介绍(Delphi)
    Delphi控件开发浅入深出(三)
  • 原文地址:https://www.cnblogs.com/foreverlin/p/10011545.html
Copyright © 2011-2022 走看看