1.Web Storage
HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能。
以前都是用cookies保存用户名等简单信息。
但是cookie有下面几个问题:
a:大小:cookies的大小被限制在4KB
b:带宽:cookies随HTTP事务一起被发送,因此会浪费一部分发送的cookies时使用的带宽。
c:复杂性:要正确的操纵cookies是很困难的。
Web Storage分为两种:
<1>sessionStorage
将数据保存在session对象中。浏览器关闭数据消失。
保存数据:sessionStorage.setItem(key,value);
读取数据:变量=sessionStorage.getItem(key);
<2>localStorage
将数据保存在哭护短本地的硬件设备中。浏览器关闭数据依旧存在。(分浏览器的,如果保存在
在谷歌浏览器,下次打开IE是不会有的)
保存数据:localStorage.setItem(key,value);

读取数据:变量=localStorage.getItem(key);
保存时不允许重负保存相同的键名。保存后可以修改键值,但不允许修改键名。
<3>保存少量数据
js:
//暂时数据
functionsaveStorage(id){var target=document.getElementById(id);var str=target.value;sessionStorage.setItem("message",str);}functionloadStorage(id){var target=document.getElementById(id);var msg=sessionStorage.getItem("message");target.innerHTML=msg;}//永久数据
functionsaveStorage(id){var target=document.getElementById(id);var str=target.value;localStorage.setItem("message",str);}functionloadStorage(id){var target=document.getElementById(id);var msg=localStorage.getItem("message");target.innerHTML=msg;}functionclearStorage(){localStorage.clear();
}

html:
<pid="msg"></p>
<inputtype="text"id="input">
<inputtype="button"value="保存数据"onclick="saveStorage('input')">
<inputtype="button"value="读取数据"onclick="loadStorage('msg')">
<inputtype="button"value="清除本地数据"onclick="clearStorage('msg')">

结果:
<4>作为简易的数据库来用
使用json作为键值。
js:
functionsave(){var data=newObject;data.name=document.getElementById('name').value;data.tel=document.getElementById('tel').value;data.address=document.getElementById('address').value;var str=JSON.stringify(data);localStorage.setItem(data.name,str);alert("数据已保存");
}functionread(){var find=document.getElementById('readName').value;var JsonData=JSON.parse(localStorage.getItem(find));console.log(JsonData.tel);document.getElementById('readTel').innerHTML=JsonData.tel;document.getElementById('readAddress').innerHTML=JsonData.address;
}

html:
姓名:<inputtype="text"id="name"/><br/>手机:<inputtype="text"id="tel"/><br/>地址:<inputtype="text"id="address"/><br/>
<inputtype="button"value="保存数据"onclick="save()"/><br/><br/>姓名:<inputtype="text"id="readName"/><br/>手机:<pid="readTel"></p>地址:<pid="readAddress"></p>
<inputtype="button"value="读取数据"onclick="read()"/>

结果:
2.本地数据库
<1>两个必要步骤
a: 创建访问数据库的对象
b: 使用事务处理
首先必须用openDatabase方法创建一个访问数据库的对象:
var db=openDatabase('mydb','1.0','Test DB',2*1024*1024);

第一个参数:数据库名
第二个参数:版本号
第三个参数:数据库的描述
第四个参数:数据库的大小
如果该数据不存在,则创建它。
<2>executeSql
第一个参数:需要执行的sql语句
第二个参数:sql语句中使用到的参数数组
如:
第三个参数:执行sql语句成功时候的回调函数
如:
     该函数的第一个参数为transaction对象,第二个为执行查询操作时返回的查询到的结果数据集对象。
第四个参数:执行sql语句错误时调用的回调函数
如:
3.本地缓存API(离线web应用程序)
->离线web应用程序:当哭护短本地与web应用程序没有建立连接时,也能正常在客户端本地使用该web应用。
程序进行有关操作。
<1>本地缓存与浏览器网页缓存的区别
开发出更为强大的离线应用程序。
<2>manifest文件
第一行必须是"CACHE MANIFEST"文字。当然运行离线web应用程序的时候,需要对服务器进行配置,让服务器支持text/cache-manifest这个MIME类型。Apache服务器和IIS服务器都有相应的配置。manifest文件中的注释以”#“开头。
<3>applicationCache对象
该对象代表了本地缓存,可以使用它来通知用户本地缓存中已经被更新,也允许用户手工更新本地缓存。
当浏览器对本地缓存进行更新时,会触发applicationCache的updateready事件。
applicationCache.onUpdateReady=function(){alert("本地缓存已被更新!");
}

<4>swapCache方法
该方法用来手动执行本地缓存的更新,他只能在applicationCache对象的updateready事件被触发时调用。
如:
applicationCache.onUpdateReady=function(){alert("正在更新本地缓存!");applicationCache.swapCache();alert("本地缓存已被更新!");
}

如果不加applicationCache.swapCache();会怎么样?

不加的话,本地缓存也会被更新,但是更新的时间是在下次打开本页面时被更新。
加上的话,本地缓存会立即被更新。
看个具体的例子:
<5>applicationCache事件
4.跨文档消息传输
HTML5提供了跨域,跨文档的通信。
首先必须监视message事件。
window.addEventListener("message",function(){.....},false);

使用window对象的postMessage方法向其他窗口发送消息。
otherWindow.postMessage(message,targetOrigin);

otherWindow为要发送窗口对象的引用。

第一个参数:要发送的消息文本
第二个参数:接受消息的对象窗口URL地址
//发送消息
iframe.postMessage("您好","目标地址");

//接受消息
window.addEventListener("meeage",function(ev){alert("从"+ev.origin+"那里传过来的信息:\n\""+ev.data+"\"");
},false);

5.Web Sockets API
Web Sockets是HTML5提供的在web应用程序中客户端与服务器断之间进行的非HTTP的通信机制。
建立的这种通信机制是实时的,永久的,除非被显式的关闭。
Web Sockets API不仅仅可以发送文本,而且还可以使用JSON对象来发送一切js中的对象。
如:
var webSocket=new WebSocket("ws://localhost:8005/socket");(客户端写法)//onmessage事件接受服务器传来的数据:
webSocket.onmessage=function(event){var data=event.data;
}//onopen事件监听socket的打开事件:
webSocket.onopen=function(event){}//onclose事件监听socket的打开事件:
webSocket.onclose=function(event){}webSocket.close();

另外通过读取readyState的属性值来获取WebSocket的状态。
connecting(数字0),表示正在连接。
open(数字1),表示已建立连接。

closing(数字2),表示正在关闭连接。

closed(数字2),表示已关闭连接。
6.Web Workers API
Web Workers是在html5中新增的,用来在web应用程序中实现后台处理的一项技术。
在使用HTML4与javascript创建的Web程序中,因为所有的处理都是在单线程内执行的,所以话费的事件比较长。
程序界面长期处于没有响应的状态。最糟糕的是可能直接崩溃。
所以Web Workers就诞生了。Web WorkersAPI,用户可以用它创建一个在后台运行的线程。将可能耗费时间较长的处理交给后台去执行。
这样对用户在前台界面的执行操作就完全没有影响了。实现了一种多线程的功能。
worker.onmessage=function(event){//处理接收到的消息
}

如:
主页面js:
var worker=new Worker("Sum.js");
worker.onmessage=function(event){alert("sum="+event.data);
}functioncal(){var num=parseInt(document.getElementById("num").value,10);//将数值传递给线程
worker.postMessage(num);
}

主页面html:
输入数值:<inputtype="text"id="num"/>
<buttononclick="cal()">计算</button>

单独的Sum.js
onmessage=function(event){var num=event.data;var result=0;for(var i=0;i<=num,i++){result+=i;}postMessage(result);
}

7.Geolocation API(地理位置信息)
<1>取得当前地理位置
void getCurrentPosition(onSuccess,onError,options);

onSuccess:获取当前地理位置成功时的回调函数
用法:
navigator.geolocation.getCurrentPosition(function(position){//成功时的处理
})

onError:获取当前地理位置失败时的回调函数
用法:该回调使用error对象作为参数,有两个属性
code:
用户拒绝了位置服务(属性值为1)
获取不到位置信息(属性值为2)
获取信息超时错误(属性值为3)
message
例子:
options:可选属性列表
a:enableHighAccuracy:是否要求高精度的地理位置信息。
b:timeout:对地理位置信息的获取做一个超时限制。
c:maximumAge:对地理位置信息进行缓存的有效时间。
<2>在页面时使用google地图

HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...相关推荐

  1. JavaScript权威设计--事件冒泡,捕获,事件句柄,事件源,事件对象(简要学习笔记十八)...

    1.事件冒泡与事件捕获 2.事件与事件句柄   3.事件委托:利用事件的冒泡技术.子元素的事件最终会冒泡到父元素直到跟节点.事件监听会分析从子元素冒泡上来的事件. 事件委托的好处:     1.每个函 ...

  2. JavaScript权威设计--JavaScript词法结构(简要学习笔记二)

    1.字符集 JavaScript是用Unicode字符集编写的 2.区分大小写 html不区分大小写,xhtml区分大小写 如:html中onclick可以写成Onclick 但是js中必须写成onc ...

  3. HTML5权威指南----读书笔记

    <!DOCTYPE html> <html> <head><meta name = 'keywords' content="HTML5权威指南--- ...

  4. HTML5 权威指南第 10 章 文档分节 学习笔记

    HTML5 权威指南第 10 章 文档分节 学习笔记 第 8 章 标记文字 内容从从文字出发,专注如何将单体内容正确的呈现出来:第 9 章 组织内容 内容从段落出发,专注如何将单体内容合理的放在段落中 ...

  5. 数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一)

    数据库LINQ TO SQL在Silverlight中的应用(WCF)------学习笔记(一) 步骤: 1. 创建SILVERLIGHT应用程序 2. 创建LINQ TO SQL [注意序列化的问题 ...

  6. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component

    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...

  7. golang实现将数据库表自动转为结构体的小工具(学习笔记)

    golang实现将数据库表自动转为结构体的小工具 必备条件 代码结构如下 代码详情 config.go init.go tool.go main.go config.json[运行man.go文件的时 ...

  8. 《JavaScript权威指南第7版》第15章 Web浏览器中的JavaScript 15.1 15.2 15.3

    第15章 Web浏览器中的JavaScript 15.1 网络编程基础 15.1.1 HTML script 标签中的JavaScript 模块 指定脚本类型 脚本运行时:异步和延迟 按需加载脚本 1 ...

  9. Springboot学习笔记(二)Web开发

    前言: 学习B站UP主狂神说视频笔记整理视频链接 狂神笔记链接 上篇笔记链接-Springboot学习笔记(一)快速上手 Web开发 静态资源 在以往的SpringMVC中所有静态资源或者页面应该放在 ...

最新文章

  1. python的前端怎么实现_Bootstrap、Python、Flask 做简单的前端
  2. phpredis5.6在win10下的安装
  3. python五十九: slots属性
  4. hdu 1005 1021 递归超限 找规律 // 只要看题中n较大都是有规律的
  5. [译] Facebook杯2013年编程挑战赛——第一轮题目及答案
  6. Java实现算法导论中最大公约数欧几里得算法
  7. 今日头条Marketing API小工具(.Net Core版本)
  8. java this用法_java中this用法小结
  9. linux 认证考试 题库,Linux认证考试题库及答案
  10. 做大厂程序员是一种怎样的体验?这四位“百度程序员”说出了自己的看法!
  11. 手写体识别代码_机器人如何在复杂的环境下进行视觉识别?
  12. VS中PCL库附加依赖项配置
  13. 关于maven依赖中的scope的作用和用法
  14. php笔试完就让我回去了,昨晚hr给了我一个面试题,说过了就安排我面试
  15. 记一次 ORA-600 [12700] 故障案例
  16. rs232读取智能电表_深度了解智能电度表,面板内容大揭秘!
  17. FlashVml2.0(WEB上的PhotoShop+Flash、VML最强开发工具)
  18. 机器学习决策树ID3
  19. 攻防世界web新手题答案_南开本部20春学期(2003)《计算机应用基础》在线作业-1答案...
  20. html(Web开发)

热门文章

  1. 如何制作在线参考手册
  2. excel去掉超链接
  3. Linux MySQl 5.7.17 MySQL ERROR 1366(HY000):Incorrect string value 解决方法
  4. Windows恶意软件API调用特征分析
  5. 切记切记:Spring配置文件中,Component-scan无法扫描到的类中的自动装配对象无法被调用,报空指针错误。...
  6. 暴力枚举 UVA 725 Division
  7. openldap 2.3 安装配置详解
  8. 捅破窗户纸:如何从过程到对象—For金色的海洋以及所有为面向对象而困惑的Tx...
  9. BCH三小时缓慢出块——需要重视的小概率事件
  10. java 关键字final static