离线应用与客户端存储
just another notes..
- 离线检测
HTML5为检测设备是否在线定义了一个navigation.onLine属性,值为true时表示设备能上网,为false是表示设备离线。不同的浏览器之间存在一定的兼容问题,但影响不大,可以直接像下面这样使用:
if(navigator.onLine){ }else{ }
另外,HTML5还为此定义了两个事件:online和offline,用来监听设备的网络变化。 - 应用缓存
HTML5的应用缓存(application cache)简称为appcache,是专门为开发离线web应用而设计的。通过描述文件(manifest file)列出要下载和缓存的资源,如下面的简单例子所示
CACHE MANIFEST #Comment file.js file.css
另外,要在中的manifest属性中指定这个文件的路径,例如:
<html type="text/cache-application" manifest="/offline.manifest">
应用缓存有许多相关的事件,例如
- checking:在浏览器为应用缓存查找更新时触发
- error:在检查更新或下载资源期间发生错误触发
- noupdate:在检查描述文件发现文件无变化时触发
- downloading:在开始下载应用程序时触发
- progress:在文件下载应用缓存的过程中不断的触发
- updateready:在页面新的应用缓存下载完毕且可以通过swapCache时触发
- cached:在应用缓存完成可用时触发
- 数据存储
- Cookie Cookie的内容比较多,前段时间被央视315弄得全网一片风雨,各种对Cookie的质疑和解释,今天才认真的了解了一下Cookie,篇幅比较长,完全可以单独写一篇文章了,等到以后有了更多的了解和实践再写这一篇文章吧,暂且只要记住cookie是不安全的就够了
- IE用户数据
从IE5.0开始。微软通过一个自定义的行为引入了持久化用户数据的概念,设置方法为在使用css的元素上指定userData行为,如下所示<div style="behavior:url(#default#userData)" id="dateStore"><div>
元素使用userData行为之后,就可以用setAttribute()方法在上面保存数据了,如下所示:
var dataStore=document.getELementById("dataStore"); dataStore.setAttribute("name","HUSTecho"); dataStore.save("author-name");
调用sava()存储数据后,下载就可以使用load()方法指定同样的数据空间名称来获取数据啦,如下所示dataStore.load("authore-name"); console.log(dataStore.getAttribute("name"));
如果要删除某个元素数据时,则通过removeAttribute()方法指定属性名称,删除了之后需要再次调用sava()来保存修改,向下面这样:dataStore.removeAttribute("name"); dataStore.sava();
- web存储机制
- storage类型
- sessionstorage对象
- globalstorage对象
- localstorage对象
- storage事件
- 限制
- IndexDB 内容很多,需要单独写一篇文章