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/