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/
web前端学习(二)html学习笔记部分(7)--web存储2的更多相关文章
- Web前端与移动开发学习路线图
文章转载自「开发者圆桌」一个关于开发者入门.进阶.踩坑的微信公众号 这里整理的Web前端与移动开发学习路线图包含初中级两个部分,你可以通过百度云盘下载观看对应的视频 链接: http://pan.ba ...
- 想做web前端project师应该学习些什么?
偶然间看到这篇文章.感觉博主写的挺不错的,假设你想做web前端project师的话,建议您阅读下面这篇文章,事实上web前端project师所做的工作事实上就是站点设计,有些小公司的美工事实上就是做w ...
- 最全的WEB前端开发程序员学习清单
史上最全的WEB前端开发程序员学习清单! 今天为什么要给大家分享这篇文章呢,我发现最近来学前端的特别多,群里面整天都有人问:前端好找工作吗?前端要怎么学啊?前端工资怎么样?前端XX,前端XXX,虽然我 ...
- web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识
web前端除了关注代码功能实现,还应具备web性能优化以及SEO优化的常识 ——不会WPO.SEO的前端工程师不是好码农 作为一名web前端工程师,除了要实现上级的要求,满足其所需要的功能,还要在平时 ...
- web前端开发控件学习笔记之jqgrid+ztree+echarts
版权声明:本文为博主原创文章,转载请注明出处. 作为web前端初学者,今天要记录的是三个控件的使用心得,分别是表格控件jqgrid,树形控件ztree,图表控件echarts.下边分别进行描述. ...
- 2022年Web前端开发流程和学习路线(详尽版)
前言 前端侧重于人机交互和用户体验,后端侧重于业务逻辑和大规模数据处理.理论上,面向用户的产品里,所有问题(包括产品.设计.后端.甚至看不见的问题)的表现形式,都会暴露在前端,而只有部分问题(数据问题 ...
- web前端零基础入门学习!前端真不难!
现在互联网发展迅速,前端也成了很重要的岗位之一,许多人都往前端靠拢,可又无能为力,不知所措,首先我们说为什么在编程里,大家都倾向于往前端靠呢?原因很简单,那就是,在程序员的世界里,前端开发是最最简单的 ...
- 最适合2018年自学的web前端零基础系统学习视频+资料
这份资料整理花了近7天,如果感觉有用,可以分享给更有需要的人. 在看接下的介绍前,我先说一下整理这份资料的初衷: 我的初衷是想帮助在这个行业发展的朋友和童鞋们,在论坛博客等地方少花些时间找资料,把有限 ...
- 史上最全的web前端开发程序员学习清单!
今天为什么要给大家分享这篇文章呢,我发现最近来学前端的特别多,群里面整天都有人问:前端好找工作吗?前端要怎么学啊?前端工资怎么样?前端XX,前端XXX,虽然我回答过无数次这种问题了,但是问这个的还是有 ...
- WEB 前端模块化,读文笔记
文章链接 WEB 前端模块化都有什么? 知识点 根据平台划分 浏览器 AMD.CMD 存在网络瓶颈,使用异步加载 非浏览器 CommonJS 直接操作 IO,同步加载 浏览器 AMD 依赖前置 req ...
随机推荐
- myeclipse启动jboss报ERROR [MainDeployer] Could not create deployment
今天用myeclipse启动jboss时报了这样的错,花了我将近一天的时间去解决这个问题,开始以为jar包问题,到最后发现是配置错了,所以分享一下.具体报错信息如下图: ERROR [MainDepl ...
- 02_Hibernate持久化配置
一.hibernate对象持久化 Web开发的分层: 为了把数据访问细节和业务逻辑分开, 一般把数据访问作为单独的持久化层.DAO是数据访问对象,使用hibernate后,数据访问对象中操作的API将 ...
- Python爬取b站任意up主所有视频弹幕
爬取b站弹幕并不困难.要得到up主所有视频弹幕,我们首先进入up主视频页面,即https://space.bilibili.com/id号/video这个页面.按F12打开开发者菜单,刷新一下,在ne ...
- Dmarc指定外域邮箱接收报告
场景说明: 如果要将DMARC报告发送到记录所在的域以外,则接收域需要配置DNS记录,以便电子邮件服务提供商知道收件人指定报告授权. ================================= ...
- NOIP2018提高组初赛选讲
说实话,这次的初赛比上一次的要简单. 不过还有些变态的题目. 在一条长度为1 的线段上随机取两个点,则以这两个点为端点的线段的期望 长度是( ). A. 1 / 2 B. 1 / 3 C. 2 / 3 ...
- Apache SOLR and Carrot2集成
1.环境 下载软件 名称 地址 solr-integration-strategies-gh-pages.zip https://github.com/carrot2/solr-integration ...
- JavaSE_04_JDK1.8新特性Lambda表达式
1.1体验Lambda的更优写法 借助Java 8的全新语法,上述Runnable接口的匿名内部类写法可以通过更简单的Lambda表达式达到等效: 1.2 Lambda标准格式 Lambda省去面向对 ...
- Vue. 之 刷新当前页面,重载页面数据
Vue. 之 刷新当前页面,重载页面数据 如下截图,点击左侧不同的数据,右侧根据左侧的KEY动态加载数据.由于右侧是同一个页面,在进行路由跳转后,不会再次刷新数据. 解决方案: 右侧的页面中 scri ...
- [原创]最优化/Optimization文章合集
转载请注明出处:https://www.codelast.com/ 最优化(Optimization)是应用数学的一个分支,它是研究在给定约束之下如何寻求某些因素(的量),以使某一(或某些)指标达到最 ...
- HDU 3086 马拉车模板
模板,但是对这个算法还是不太清楚,真实不明觉厉.... #include <iostream> #include <cstdio> #include <string.h& ...