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

简介:
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:
复制代码
//暂时数据
function saveStorage(id){
 var target=document.getElementById(id);
 var str=target.value;
 sessionStorage.setItem("message",str);
 
}
 
function loadStorage(id){
 var target=document.getElementById(id);
 var msg=sessionStorage.getItem("message");
 target.innerHTML=msg;
 
 
}
 
//永久数据
function saveStorage(id){
 var target=document.getElementById(id);
 var str=target.value;
 localStorage.setItem("message",str);
 
}
 
function loadStorage(id){
 var target=document.getElementById(id);
 var msg=localStorage.getItem("message");
 target.innerHTML=msg;
 
}
 
function clearStorage(){
 localStorage.clear();
}
复制代码
 
html:
<p id="msg"></p>
<input type="text" id="input">
<input type="button" value="保存数据" onclick="saveStorage('input')">
<input type="button" value="读取数据" onclick="loadStorage('msg')">
<input type="button" value="清除本地数据" onclick="clearStorage('msg')">
结果:
 
<4>作为简易的数据库来用
使用json作为键值。
js:
复制代码
function save(){
 var data=new Object;
 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("数据已保存");
}
 
function read(){
 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:
复制代码
姓名:<input type="text" id="name"/><br/>
手机:<input type="text" id="tel"/><br/>
地址:<input type="text" id="address"/><br/>
<input type="button" value="保存数据" onclick="save()"/><br/><br/>
 
姓名:<input type="text" id="readName"/><br/>
手机:<p id="readTel"></p>
地址:<p id="readAddress"></p>
<input type="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);
}
 
function cal(){
    var num=parseInt(document.getElementById("num").value,10);
    //将数值传递给线程
    worker.postMessage(num);
}
 
复制代码

 

主页面html:
输入数值:<input type="text" id="num"/>
<button  onclick="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地图
转载: http://www.cnblogs.com/zqzjs/p/4855922.htm
目录
相关文章
|
2月前
|
存储 移动开发 大数据
HTML5 Web IndexedDB 数据库详解
IndexedDB 是一种高效的浏览器存储方案,允许在本地存储大量结构化数据,支持索引和事务,适用于需要离线和大数据处理的应用。它由数据库、对象仓库等组成,通过键值对存储数据,确保数据一致性和完整性。本介绍展示了如何创建、读取、更新和删除数据,以及事务和错误处理的最佳实践。
|
14天前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
27 6
|
14天前
|
前端开发 JavaScript UED
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势
在数字化时代,Web 应用性能优化尤为重要。本文探讨了CSS与HTML在提升Web性能中的关键作用及未来趋势,包括样式表优化、DOM操作减少、图像优化等技术,并分析了电商网站的具体案例,强调了技术演进对Web性能的深远影响。
21 5
|
2月前
|
存储 移动开发 数据库
HTML5 Web IndexedDB 数据库常用数据存储类型
IndexedDB 支持多种数据存储类型,满足复杂数据结构的存储需求。它包括基本数据类型(如 Number、String、Boolean、Date)、对象(简单和嵌套对象)、数组、Blob(用于二进制数据如图像和视频)、ArrayBuffer 和 Typed Arrays(处理二进制数据)、结构化克隆(支持 Map 和 Set 等复杂对象),以及 JSON 数据。尽管不直接支持非序列化数据(如函数和 DOM 节点),但可以通过转换实现存储。开发者应根据具体需求选择合适的数据类型,以优化性能和使用体验。
|
2月前
|
缓存 移动开发 前端开发
HTML5 应用程序缓存详解
HTML5 应用程序缓存(Application Cache)通过缓存 HTML、JavaScript、CSS 和图像等资源,使 Web 应用能在离线状态下运行。它利用 Manifest 文件(`.appcache`)定义缓存资源列表,浏览器会在加载页面时下载并缓存这些资源。此外,应用程序缓存还提供了事件处理机制,允许开发者监控缓存状态并进行手动管理。尽管这一技术已被视为过时,建议使用 Service Workers 和 Cache API 等现代替代方案来实现更强大的离线功能和缓存控制。
|
2月前
|
移动开发 JavaScript 前端开发
HTML5 Web Workers详解
HTML5 Web Workers 允许在后台线程中运行 JavaScript,实现复杂计算而不影响用户界面,提升应用性能。其主要特性包括并行处理、异步通信、独立作用域及多数据类型支持。通过创建和使用 Worker 文件,如 `worker.js`,可执行后台任务,并与主线程通过消息传递机制通信。适用于数据处理、图像处理、复杂计算及网络请求并行等场景。需要注意的是,Web Workers 在浏览器兼容性、安全性限制、调试及资源消耗方面需特别关注。合理利用 Web Workers 可显著增强 Web 应用的流畅度和响应速度。
|
2月前
|
SQL 存储 移动开发
HTML5 Web SQL 数据库详解
Web SQL 数据库是 HTML5 中的一种本地存储技术,允许在浏览器中使用 SQL 语言操作本地数据,支持离线访问和事务处理,适用于缓存数据和小型应用。然而,其存储容量有限且仅部分现代浏览器支持,标准已不再积极维护,未来可能被 IndexedDB 和 localStorage 等技术取代。使用时需谨慎考虑兼容性和发展前景。
|
2月前
|
移动开发 前端开发 JavaScript
HTML与现代Web开发的不同技术
【10月更文挑战第11天】HTML与现代Web开发的不同技术
27 0
|
7天前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。
|
27天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
34 1